搜索
写经验 领红包
 > 科技

sql索引失效如何处理(sql索引失效有哪些情况会失效)

导语: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 导致的索引失效

执行前:

执行后:

免责声明:本站部份内容由优秀作者和原创用户编辑投稿,本站仅提供存储服务,不拥有所有权,不承担法律责任。若涉嫌侵权/违法的,请反馈,一经查实立刻删除内容。本文内容由快快网络小面创作整理编辑!