mysql索引失效的一些情况

本文详细介绍了MySQL中索引的工作原理及使用技巧,包括不同查询条件对索引的影响、字符串类型字段索引的正确用法、计算列索引的问题、复合索引的使用场景以及全表扫描与索引查询效率对比等内容。

以mysql版本8.0.11为例
 1.

      <> 、not in 、not exist、exists、!= 会使索引失效

       然而如果是主键索引 <>、not in、 !=  索引同样能生效

        in, is null, is not null,>,>=,<,<=,= 索引都能生效

 2.

      where  name like '%a'  索引失效

      where name like 'a%'  或者‘a%a%’ 索引生效 

 3.

      如果索引字段是字符串需加引号

      where  name =  '11'  索引生效  

      where  name =  11  查询结果正常 索引失效    where  name =  aa 报错

 4.

      对索引列做计算会使索引失效

      select * from user where substring(name,1.2)='aa'

5.

      查询有or的时候,查询条件字段都为索引 索引才能生效

      如 select * from user where id='1' or name = 'a' 只有当 id,name都为索引才生效

6.

    如果使用全表扫描速度比使用索引快或者查询出的结果数量和总表都差不多了  索引不生效


    


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值