索引在什麼情況下會失效
阿新 • • 發佈:2019-02-11
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認為全表掃面要比使用索引快,則不使用索引。
如:表裡只有一條資料。