索引會失效的原因分析及解決索引失效的方法

2021-12-30 01:52:21 字數 1777 閱讀 5469

建立student表,id是主鍵

建立復合索引

create index idx_name_age on student(name,age);檢視索引

1.全值匹配我最愛

explain select * from student where name = '張三' and age = 1;2.最佳左字首法則,帶頭大哥不能死,中間兄弟不能少。

3.不要在索引列上做任何操作

explain select * from student where left(name,1) = '張' and age = 1;

4.範圍條件後列上索引失效

explain select * from student where age > 1 and name = '王五';

查詢級別是範圍,name上的索引失效。

5.盡量使用覆蓋索引減少使用select *

6.使用不等於(!= 或者<>)不能使用索引

explain select * from student where name != '張三';

7.使用 is null 或者 is not null 也不能使用索引

8.like 已萬用字元開頭(%abc)導致索引失效 (解決方法:使用覆蓋索引)

explain select * from student where name like '%張%';

想用的話解決方法,使用覆蓋索引

explain select name from student where name like '%張%';9.少用or,用它來連線索引會失效

explain select * from student where name = '張三' or age = 2;

like索引失效原因 索引失效的情況及原因定位

同事遇到乙個奇葩的問題,乙個表裡某個欄位建了索引,但是有的值走索引,有的值不走索引。因為一般情況乙個字段要麼完全不走索引,要麼走索引,怎麼會有的值走索引,有的不走索引。select 條件非常簡單,因為涉及到敏感資訊就不貼表結構了。例如select from order where status 2 ...

Oracle索引失效原因及解決方法

1使用否定關鍵字 not in,not exist select fromdrama where id 1,mysql不會 2單獨使用不等式關鍵字 直接用 或 可能會失效,mysql不會 3使用null關鍵字 is null或is not null 可能會失效 4左模糊或全模糊 like 放在前面 ...

索引失效的原因

1 隱式轉換導致索引失效.這一點應當引起重視.也是開發中經常會犯的錯誤.由於表的字段tu mdn定義為varchar2 20 但在查詢時把該字段作為number型別以where條件傳給oracle,這樣會導致索引失效.錯誤的例子 select from test where tu mdn 13333...