1. 程式人生 > >mysql索引無效的幾種用法

mysql索引無效的幾種用法

  1. WHERE字句的查詢條件裡有不等於號(WHERE column!=...),MYSQL將無法使用索引

  2. 類似地,如果WHERE字句的查詢條件裡使用了函式(如:WHERE DAY(column)=...),MYSQL將無法使用索引

  3. 在JOIN操作中(需要從多個數據表提取資料時),MYSQL只有在主鍵和外來鍵的資料型別相同時才能使用索引,否則即使建立了索引也不會使用

  4. 如果WHERE子句的查詢條件裡使用了比較操作符LIKE和REGEXP,MYSQL只有在搜尋模板的第一個字元不是萬用字元的情況下才能使用索引。比如說,如果查詢條件是LIKE 'abc%',MYSQL將使用索引;如果條件是LIKE '%abc'

    ,MYSQL將不使用索引。

  5. 在ORDER BY操作中,MYSQL只有在排序條件不是一個查詢條件表示式的情況下才使用索引。儘管如此,在涉及多個數據表的查詢裡,即使有索引可用,那些索引在加快ORDER BY操作方面也沒什麼作用。

  6. 如果某個資料列裡包含著許多重複的值,就算為它建立了索引也不會有很好的效果。比如說,如果某個資料列裡包含了淨是些諸如“0/1”或“Y/N”等值,就沒有必要為它建立一個索引。

原文摘自:MYSQL索引無效和索引有效的詳細介紹