SQL導致的索引失效

2021-10-05 22:52:00 字數 561 閱讀 1034

我們在開發中會發現, 明明我這條sql語句應該是用到了索引才對, 但是為何速度仍然那麼慢, 其實是你的sql寫的有問題導致了索引失效, 我們來看下什麼情況下mysql的索引會失效

對查詢進行優化,盡量避免全表掃瞄,避免導致索引失效

避免在where子句中=的左邊使用表示式操作或者函式操作

select id from

table

where num /2=

1

select id from

table

where substring(name,1,

2)='wise'

避免在where子句中使用like模糊查詢
select id from

table

where name like

'wise'

在使用聯合索引是要注意最左原則,例如如果當前聯合索引是index(a,b,c),那麼如果where子句中有a就會用到聯合索引,但是如果只用到b,c就會失去索引效果

導致索引失效的情況

1 最好全值匹配 索引怎麼建我怎麼用。2 最佳左字首法則 如果索引了多列,要遵守最左字首法則。指的是查詢要從索引的最左前列開始並且不跳過索引中的列。3 不在索引列上做任何操作 計算,函式,自動或者手動 型別裝換 會導致索引失效而導致全表掃瞄。mysql自帶api函式操作,如 left等 4 儲存引擎...

SQL索引失效

索引什麼時候不會生效,以下集中情況會導致索引失效 1.條件中用or,即使其中有條件帶索引,也不會使用索引查詢 這就是查詢盡量不要用or的原因,用in吧 注意 使用or,又想索引生效,只能將or條件中的每個列都加上索引 2.對於多列索引,不是使用的第一部分,則不會使用索引。3.like的模糊查詢以 開...

會導致索引失效語句

1 使用like關鍵字模糊查詢時,放在前面索引不起作用,只有 不在第乙個位置,索引才會生效 like 文 索引不起作用 2 使用聯合索引時,只有查詢條件中使用了這些欄位中的第乙個字段,索引才會生效 3 使用or關鍵字的查詢,查詢語句的查詢條件中只有or關鍵字,且or前後的兩個條件中的列都是索引時,索...