mysql索引失效学习笔记

本文详细探讨了MySQL中不同查询条件下索引的使用情况,包括但不限于:单字段索引、范围查询、不等式操作、函数操作、多条件查询、排序与分页等,分析了何时会走索引、何时不走索引及其原因,强调了MySQL优化器的选择策略,并提醒开发者需要结合EXPLAIN等工具进行查询优化。
摘要由CSDN通过智能技术生成

环境:mysql5.7.13 innodb引擎

1.select * from test where name=‘Allen’;
如果name字段建立了索引,一般会走该索引,但是如果name字段的值分布不均匀,比如Allen这个名字占了大部分,则很有可能会放弃走name索引,直接进行全表扫描,因为如果继续走name索引的话,就要进行大量的回表查询,这样的话对比全表扫描就没有了优势。

2.select * from test where name=123;
这种情况下不会走name索引,因为name字段的类型是字符串,where条件中的123没加引号,所以是数字,查询时要隐式转换成字符串。只要发生这种隐式转换的,都不会走索引。

3.select * from test where name>‘Allen’;
可以在name索引上做范围查询,但是否走索引还是要看优化器的分析,如果符合条件的数据行太多,则会直接进行全表扫描。

4.select * from test where name!=‘Allen’;
但从这条语句上看,的确很难去走索引。但是如果name不等于Allen的行实在太多,优化器可以通过改变查询条件从而走索引查询,比如改为查询name小于’Allen’和name大于’Allen’的行。

5.select * from test where name is null;
当符合条件的行数少时走索引。

6.select * from test where name i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值