mysql索引無效的幾種用法
阿新 • • 發佈:2019-01-13
WHERE字句的查詢條件裡有不等於號
(WHERE column!=...)
,MYSQL將無法使用索引類似地,如果WHERE字句的查詢條件裡使用了函式(如:
WHERE DAY(column)=...
),MYSQL將無法使用索引在JOIN操作中(需要從多個數據表提取資料時),MYSQL只有在主鍵和外來鍵的資料型別相同時才能使用索引,否則即使建立了索引也不會使用
如果WHERE子句的查詢條件裡使用了比較操作符LIKE和REGEXP,MYSQL只有在搜尋模板的第一個字元不是萬用字元的情況下才能使用索引。比如說,如果查詢條件是
LIKE 'abc%'
,MYSQL將使用索引;如果條件是LIKE '%abc'
在ORDER BY操作中,MYSQL只有在排序條件不是一個查詢條件表示式的情況下才使用索引。儘管如此,在涉及多個數據表的查詢裡,即使有索引可用,那些索引在加快
ORDER BY
操作方面也沒什麼作用。如果某個資料列裡包含著許多重複的值,就算為它建立了索引也不會有很好的效果。比如說,如果某個資料列裡包含了淨是些諸如“0/1”或“Y/N”等值,就沒有必要為它建立一個索引。
原文摘自:MYSQL索引無效和索引有效的詳細介紹