總結 sql語句中索引失效的情況

2021-10-06 14:47:50 字數 803 閱讀 7184

時隔許久又來更新部落格了!

總結一下sql優化中sql語句裡會導致索引失效的語句(索引失效,導致全表掃瞄)

1、like的前置%

eg. select * from user where name like '%張三%';

2、where條件中的 or 語句

eg. select * from user where account= 20 or account = 30;

解決辦法:使用 union、union all 語句。

select * from user where account = 20

union all

select * from user where account = 30

3、where條件中的 in 和not in

eg. select  * from user where account in (1,2,3);

解決辦法:若是連續值採用 between語句

select * from user where account between 1 and 3;

4、 is null 和 is not null 

eg.select * from user where account is null;

5、!=  和<> 

eg.select * from user where account != 1;

select * from user where account > 1;

6、判斷乙個值是否存在,用exists 替代in

7、where條件中使用函式對索引列進行操作

索引查詢失效情況總結

好久沒寫了,近期sql優化效能的問題比較多,打算整理下sql索引相關知識 未完待持續跟進總結 先彙總下下網上一下大佬相關的筆記 mysql索引查詢失效的情況 索引查詢失效的幾個情況 1 like 以 開頭,索引無效 當like字首沒有 字尾有 時,索引有效。2 or語句前後沒有同時使用索引。當or左...

索引失效的情況

索引並不是時時都會生效的,比如以下幾種情況,將導致索引失效 如果條件中有or,即使其中有條件帶索引也不會使用 這也是為什麼盡量少用or的原因 注意 要想使用or,又想讓索引生效,只能將or條件中的每個列都加上索引 對於多列索引,不是使用的第一部分,則不會使用索引 like查詢是以 開頭 如果列型別是...

索引失效的情況

對於後端開發工程師來說,熟練掌握資料庫的極有必要的,靈活使用索引也是必須技能。但索引並不是時時都會生效的,以下列舉出索引失效的原因 對索引列進行運算導致索引失效,運算包括 等 使用oracle內部函式導致索引失效.對於這樣情況應當建立基於函式的索引.單獨的 like 百分號在前.單獨引用復合索引裡非...