> 科技
sql索引失效如何处理(sql索引失效有哪些情况会失效)
导语:SQL高级:SQL 的常见问题-索引失效
定义
可以导致索引失效的情况有 6 种:
复合索引,跨列。复合索引,没有全索引匹配。复合索引,使用 5 种不等于:!=<>is nullis not nullin在索引上进行函数运算,类型转换。like 关键字,使用 % 开头使用 or 关键字主要危害
索引失效,查询效率低下。
改进方法
SQL 优化是一种概率层面的优化,不会一定有效。使用索引覆盖会肯定有效。
代码实例
实例 1:
目的:演示在复合索引上运算导致索引失效
执行前:
取其中两个顺序索引执行,索引正常利用。
失效运算执行后:
通过 key_len 的长度推断,复合索引只用了其中一个,因此另外一个在运算过程中失效。
索引都执行了运算,全部失效。
复合索引,左边失效,右边全部失效。
实例 2:
目的:演示在单索引上运算导致索引失效
全部失效执行:
左边失效执行后:
剩余单索引依然有效,不受影响。
实例 3:
目的:演示使用几种不等于会导致索引失效
执行前:
增加不等号执行后:
实例 4
目的: 演示 SQL 优化器按概率影响主动优化的情况
执行前:
> 执行后:
实例 4
目的: like 以 % 开头,导致索引失效
执行前:
去掉 % 开头执行后:
必须使用 % 开头的改进办法:索引覆盖
实例 5
目的:演示类型转换导致索引失效
执行前:
隐式执行后:
实例 6
目的:演示使用关键字 or 导致的索引失效
执行前:
执行后:
免责声明:本站部份内容由优秀作者和原创用户编辑投稿,本站仅提供存储服务,不拥有所有权,不承担法律责任。若涉嫌侵权/违法的,请反馈,一经查实立刻删除内容。本文内容由快快网络小面创作整理编辑!