1. 程式人生 > >Mysql優化選擇最佳索引使用方法

Mysql優化選擇最佳索引使用方法

索引的目的在於提高查詢效率,其功能可類比字典,通過該索引可以查詢到我們想要查詢的資訊,因此,選擇建立好的索引十分重要,以下是為Mysql優化選擇最佳索引的方法步驟:

1. 首先列出查詢中所有使用的表,併為查詢中的每個子查詢建立一個獨立的列表。如果有一個包含 2 SELECT 子查詢的 SELECT 查詢,應該建立 3 個列表,每個列表包含引用在其中的表。在此過程結束時,就會在每個查詢列表中為每個表新增一個列的列表。

2. 在任何索引中最左邊的列應與查詢相等比較匹配,可以新增多個列,只要所有列與常量進行比較相等即可。

3.選擇一個列,這將是範圍列,MySQL 在每個索引中只支援一個範圍列,需使用範圍運算子

(<>, >, <, IN(), BETWEEN, LIKE)來檢視所有的比較,並選擇可以過濾最多行數的那個,將該列給該表新增為索引中的下一列。

4. 如果查詢中不存在範圍列,可以新增 GROUP BY 子句中的列。

5. 如果查詢中不存在範圍列,並且沒有 GROUP BY 子句,則可以新增 ORDER BY 子句中的列。

6. 在某些情況下,建立一個獨立的索引來儲存 ORDER BY 子句的列是有意義的,因為 MySQL 有時會選擇使用它。請注意,儘管如此,索引應該包含 ORDER BY 子句中的所有列,它們應該全部在 ORDER BY 子句中用相同的順序(ASC / DESC)

指定。這並不能保證資料庫的優化器會選擇這個索引而不是 WHERE 複合索引,但是值得一試。

7. 最後,從 SELECT 子句中新增相關的列,這可能允許 MySQL 使用索引作為覆蓋索引。覆蓋索引是包含過濾和查詢子句中的所有列的索引。這樣的索引允許資料庫僅通過使用索引執行查詢,而不需要訪問表。在許多情況下,這種方法顯然更快。

以上是Mysql優化選擇最佳索引的方法,對於有這方面需求的人員來說,可以嘗試一下,相信會有所收穫!