使用MySQL複合索引加速慢查詢


讓我們首先了解什麼是複合索引:

  • 複合索引是作用於多個列的索引。

  • 它也稱為多列索引。

  • MySQL允許使用者建立最多包含16列的複合索引。

  • 查詢最佳化器將複合索引用於測試索引中所有列的查詢。

  • 它也可用於測試第一列、前兩列等情況的查詢。

  • 如果在索引定義中以正確的順序指定列,則可以使用單個複合索引來加速對同一表上的某些型別查詢。

讓我們看看如何在建立表時建立複合索引。可以使用以下語句:

查詢

CREATE TABLE table_name (
   c1 data_type PRIMARY KEY,
   c2 data_type,
   c3 data_type,
   c4 data_type,
   INDEX index_name (c2,c3,c4)
);

在上述語句中,複合索引包含三列c2、c3和c4。

也可以使用“CREATE INDEX”語句將複合索引新增到現有表中。讓我們看看如何操作:

查詢

CREATE INDEX index_name
ON table_name(c2,c3,c4);

讓我們看看如何使用複合索引加速慢查詢:

  • 查詢執行速度取決於其持續時間。

  • 使用索引提示可以提高查詢速度。

  • MySQL最佳化器可用於在選擇索引時做出正確的決策。

  • 但這隻應在靜態查詢上進行。

  • 如果添加了“WHERE”子句發生變化的查詢,則查詢的效能會下降,因為它不會讓最佳化器發揮作用。

  • “FORCE INDEX”語句的作用類似於“USE INDEX (index_list)”,此外,表掃描被認為是一項代價高昂的任務。

  • 只有在無法使用命名索引查詢表中的行時,才需要表掃描。

更新於:2021年3月9日

501 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.