索引失效的幾種例子

2021-08-06 03:31:31 字數 664 閱讀 9868

索引並不是時時都會生效的,比如以下幾種情況,將導致索引失效:

1.如果條件中有or,即使其中有條件帶索引也不會使用(這也是為什麼盡量少用or的原因)

注意:要想使用or,又想讓索引生效,只能將or條件中的每個列都加上索引

2.對於多列索引,不是使用的第一部分,則不會使用索引

3.like查詢是以%開頭

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

5.如果mysql估計使用全表掃瞄要比使用索引快,則不使用索引

此外,檢視索引的使用情況

show status like 『handler_read%』;

大家可以注意:

handler_read_key:這個值越高越好,越高表示使用索引查詢到的次數

handler_read_rnd_next:這個值越高,說明查詢低效

索引失效的幾種情況

使用explain sql 可檢視mysql執行計畫 type為掃瞄型別,key為使用索引型別 1.使用了or 除非or的列都加上了索引 2.聯合索引 未符合索引字段順序 3.like查詢 使用前 不走索引 4.字元型不加引號 資料庫自動轉換成數值型 資料型別不統一 不走索引 5.sql中使用函式,...

索引失效的幾種場景

在資料庫sql優化中,百分之80 的問題sql都可以通過索引來解決,但是有時候我們也會碰到一種情況,明明索引都有,為什麼mysql沒有選擇走索引而是走了全表掃瞄呢?近期就碰到乙個案例,同大家分析乙個當時的解決思路以及對索引失效的幾種情況總結一下 在乙個風和麗日的下午,突然一條高亮的釘釘資訊抖動在為眼...

索引失效的幾種情況

1.有or必全有索引 2.復合索引未用左列字段 3.like以 開頭 4.需要型別轉換 5.where中索引列有運算 6.where中索引列使用了函式 not in 或 not exists 7.如果mysql覺得全表掃瞄更快時 資料少 1.唯一性差 2.頻繁更新的字段不用 更新索引消耗 3.whe...