如果某個數據列裡包含許多重復的值,就算為它建立了索引也不會有很好的效果。比如說,如果某個數據列裡包含的淨是些諸如"0/1"或"Y/N"等值,就沒有必要為它創建一個索引。
如果WEHERE子句的查詢條件裡有不等號(WHERE
coloum != ...),MySQL將無法使用索引。
類似地,如果WHERE子句的查詢條件裡使用了函數(WHERE DAY(column) = ...),MySQL也將無法使用索引。
在JOIN操作中(需要從多個數據表提取數據時),MySQL只有在主鍵和外鍵的數據類型相同時才能使用索引。
如果WHERE子句的查詢條件裡使用比較操作符LIKE和REGEXP,MySQL只有在搜索模板的第一個字符不是通配符的情況下才能使用索引。比如說,如果查詢條件是LIKE 'abc%',MySQL將使用索引;如果查詢條件是LIKE '',MySQL將不使用索引。
在ORDER BY操作中,MySQL只有在排序條件不是一個查詢條件表達式的情況下才使用索引。(雖然如此,在涉及多個數據表查詢裡,即使有索引可用,那些索引在加快ORDER BY方面也沒什麼作用)