ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

索引失效案例总结

2021-09-08 16:31:50  阅读:167  来源: 互联网

标签:name 案例 age 跨列 索引 失效 where


索引失效原则

1. 复合索引跨列无序使用
2. 复合索引中使用!=、<、>、NOT NULL、IS NOT NULL等会导致自身以及右侧索引失效
3. 对索引列进行操作包括但不限于函数、计算、类型转换
4. LIKE关键字进行模糊匹配查询中模糊匹配符号居左会导致自身以及右侧索引失效
5. 进行避免使用IN关键字(查询内容超过总内容30%转为全表查询会导致索引失效),OR关键字(会导致右侧索引失效)

索引失效的例子

复合索引(a,b,c)

1. where a=3 and b=5 and c=4;  【a,b,c 走索引】

2. where c=4 and b=6 and a=3; 【c,b,a 底层自动优化 走索引】

3. where a=3 and c=7; 【a走索引,c跨列使用不走索引】

4. where a=3 and b>7 and c=3; 【a,b走索引,b索引是范围值但阻塞了c,c不走索引】

5. where b=3 and c=4; 【b、c跨列使用,不走索引】

6. where a>4 and b=7 and c=9; 【a走范围索引,阻塞了b、c,b、c不走索引】

7. where a=3 order by b; 【a、b走索引】

8. where a=3 order by c; 【a走索引,c跨列使用不走索引】

9. where b=3 order by a; 【b跨列使用导致b、a都不走索引】

单列索引(age)

where age = 20; 【走索引】
where age+10 = 30; 【不走索引】
where age = 30-10; 【走索引】

where concat('sname','age') = 'test'; 【不走索引】
where age = concat('sname','test'); 【走索引】

单列索引(name)

where name like '前缀%' 【走索引】
where name like '%后缀' 【不走索引,扫描全表】

字符串列与数字比较 ★ 【字符串 = 数字】不走索引

INDEX('a' char(10))
where a = '1'; 【走索引】
where a = 1; 【不走索引】

INDEX('b' int)
where b = '1'; 【走索引】
where b = 1; 【不走索引】

标签:name,案例,age,跨列,索引,失效,where
来源: https://www.cnblogs.com/openmind-ink/p/15243300.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有