不一定有效,當查詢條件中不包含索引列或查詢條件復雜且不匹配索引順序
對于一些小表,MySQL可能選擇全表掃描而非使用索引,因為全表掃描的開銷可能更小
最終是否用上索引是根據MySQL成本計算決定的,評估CPU和I/O成本
排查索引效果
使用功能Explain命令,使用命令后觀察Explain結果中的type(訪問類型)、key(使用的索引)、rows(掃描的行數)等
當查詢使用索引時,Type一般顯示未index或range,如果是ALL,就表示查詢執行了全表掃描,沒使用索引
使用索引時,Key會顯示索引名稱,如果是NULL,就表示查詢沒使用索引
Rows顯示了查詢掃描的行數,在InnoDB中有時不準
問:假設你有一個查詢非常慢,且你已經確定查詢使用了一個復合索引,你會如何診斷并優化這個查詢?
這個問題可以通過描述排查索引效果的方法來回答
首先可以使用Explain語句來查看查詢的執行計劃,確認是否使用了正確的索引,其次可以檢查是否違反最左匹配原則的情況,調整查詢條件的順序。優化措施包括減少返回的列數,使用覆蓋索引。