MySQL优化之解决索引失效

目录

索引失效场景一:带头大哥不能死,中间兄弟不能断

索引失效场景二:在索引列上做操作

索引失效场景三:范围条件右边全失效

索引低效场景四:select*会降低索引的效率

索引失效场景五:使用!=或<>会导致索引失效

索引失效场景六、isnull和is not null字段无法使用索引

索引失效场景七、%like%查询时的索引失效问题

索引失效场景八、字符串不加单引号索引失效

索引失效场景九、少用or,用or连接索引会失效

练习


 

索引失效场景一:带头大哥不能死,中间兄弟不能断

 

下面的例子基于这个staffs职工表,我们只建立了一个复合索引INDEX idx_staffs_nameAgePos(name,age,pos);

 

带头大哥不死索引就不会失效

如图,查询时只要存在第一个索引字段 ,执行计划中就能看到进行了索引查询

带头大哥死了索引查询就失效

 

中间兄弟不能断 

假设有一个复合索引(a,b,c),兄弟不能断说的是如何直接查a 和 c会导致a后面的所有索引失效

 

总结:对于复合索引查询,带头大哥死了索引查询即失效,如果中间兄弟断了会影响索引查询性能。

因此我们要遵守最佳左前缀法则

 

 

索引失效场景二:在索引列上做操作

 

如图,不要在索引列上做任何操作(计算、函数、自动或手动的类型转换),这样做会导致索引失效

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值