sql操作符与索引失效
来源:互联网 发布:淘宝单笔如何部分退款 编辑:程序博客网 时间:2024/06/18 09:30
先记一笔以后补充
问题:
操作符 IN/EXISTS/LIKE/NOT IN/OR/BETTWEEN...AND哪些会引起索引失效?
一.BETTWEEN…AND
会使用索引,但是需要注意的是它相当于"XXX>=num1 and XXX<=num2",包含等号。
二.LIKE
当like后边跟的是右百分,即'zhangsan%'或'zhang%san%'时都是使用索引的,当like后边跟字符串最左边带左百分号时,即'%zhangsan'或'%zhangsan%'时,索引会失效,所以尽量不使用左百分,如果一定要用左百分使用覆盖索引可以提高效率。
mysql中测试
测试用表
表上索引
like测试结果
三.IN
in的使用先上示例
作用于主键列时
作用于非主键列时
个人理解:
当in作用于主键列时会使用索引,所以条件是主键时可以使用;当不是主键列最好不用使用in,极有可能导致索引失效(比如:in里边的值表中不存在时,in里的一个值在表中有多行匹配时)。所以很多人说不要使用in也不是没有道理。
四.NOT IN
使用not in索引失效。
五.EXISTS
主要是内层循环会用到索引,外层循环不对应查询列。
六.OR
与in的情况差不多。在主键列上可以,但非主键列索引失效。
阅读全文
0 0
- sql操作符与索引失效
- 索引失效与优化
- SQL 联合索引失效问题
- SQL优化避免索引失效
- SQL优化避免索引失效
- SQL优化避免索引失效
- SQL优化避免索引失效
- 表压缩与索引失效
- SQL查询索引失效的情况
- 哪些情况下sql索引会失效
- 哪些情况下sql索引会失效
- Oracle之move操作导致索引失效
- 记一次sql优化,or查询优化与连接索引失效
- 避免在sql的where中对字段进行转换(函数转换/操作符转换/隐式转换)------索引会失效从而导致慢查询
- Oracle PL/SQL操作(四)索引与约束
- 索引失效
- 索引失效
- 索引失效
- SQL优化30条
- C++基础知识
- 阿里校招内推电话面
- pyhton微博爬虫(3)——获取微博评论数据
- Super Jumping! Jumping! Jumping!
- sql操作符与索引失效
- 输出流关闭造成的Socket关闭
- 暗黑破坏神
- Android函数响应式编程最新RxJava-操作符入门(2)
- 遇到问题---web访问超长时间操作请求时方法会自动运行两次--nginx自动重试导致的post提交两次
- bootstrap和angular-ui-bootstrap(popover之差)
- plsql查询结果乱码解决方案!!!
- Maven 依赖范围、依赖传递、排除依赖
- Texture.height Texture的像素