索引失效情況

問題:有時候索引加了,但是還是不會觸發到索引,今天這裏綜合了幾個不走索引的地方

  1. 如果查詢條件用or,必須or條件中的每個列都加上索引,否則無效。
  2. 對於複合索引(又叫多列索引或者聯合索引),如果查詢的列不使用複合索引的第一部分,則不使用索引。例如,tb表的複合索引爲(key1,key2,key3),則查詢select * from tb where key2=1 and key2>5將不會使用索引。
  3. 如果like是以%開頭的,則該列上的索引不會被使用。例如:select * from tb where key1 like "%a"; 即使key1列上建立了索引,該查詢也不會使用索引。
  4. 存在索引列的數據類型隱形轉換,則不使用索引。例如:列key1的數據類型爲字符串,select * from tb where key1=1; 將不會使用索引。要想使用索引,必須將字符串用引號印起來。
  5. where字句裏對索引列有數學運算或者使用函數,則不使用索引
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章