1. 程式人生 > >索引在什麼情況下會失效

索引在什麼情況下會失效

1. 對於建立的多列索引(複合索引),不是使用的第一部分就不會使用索引

alter table student add index my_index(name, age)   // name左邊的列, age 右邊的列                                                              

       select * from student where name = 'aaa'     // 會用到索引

       select * from student where age = 18          //  不會使用索引

2. 對於使用 like 查詢, 查詢如果是 ‘%aaa’ 不會使用索引,而 ‘aaa%’ 會使用到索引

。 

      select * from student where name like 'aaa%'     // 會用到索引

       select * from student where name like '%aaa'        或者   '_aaa'   //  不會使用索引

3. 如果條件中有 or, 有條件沒有使用索引,即使其中有條件帶索引也不會使用,換言之, 就是要求使用的所有欄位,都必須單獨使用時能使用索引。

4. 如果列型別是字串,那麼一定要在條件中使用引號引用起來,否則不使用索引。

5. 如果mysql認為全表掃面要比使用索引快,則不使用索引。

      如:表裡只有一條資料。