勵志

勵志人生知識庫

不走索引的原因

不走索引的原因主要包括以下幾點:

查詢謂詞沒有使用索引的主要邊界。例如,使用SELECT *而不是具體的欄位,可能導致不使用索引。

索引列上存在空值(NULL)。如果查詢條件中的索引列有NULL值,某些查詢可能無法使用索引,如包含COUNT(*)的查詢。

索引列上存在函式運算。如果查詢條件中使用了函式,可能不會使用索引,除非該函式被定義為索引函式。

使用不適當的運算符。例如,使用<>或!=可能导致不使用索引。

使用OR連線條件。如果OR連線的欄位沒有索引,整個查詢可能不會使用索引。

使用模糊搜尋(如%在LIKE條件前)。模糊搜尋可能導致不使用索引,除非將%放在條件末尾。

數據量小或需要選擇大部分數據。如果表很小或者查詢涉及大量數據,可能不會使用索引。

字元集或類型不一致。如果兩個表的字元集或類型不一致,可能導致索引失效。

不符合最左前綴原則。在使用聯合索引時,如果不遵循最左前綴原則,可能不會使用所有索引。

使用IN操作符且元素過多。IN操作符可能導致全表掃描,除非IN包含的元素數量較少。

這些原因都可能導致資料庫最佳化器選擇不使用索引,從而提高查詢性能。