mysql中存在索引但不使用情况详解

本文列举了MySQL在特定情况下不使用已创建索引的情况,包括全表扫描更快时、特定表类型仅支持等值查询、复合索引的非首列查询、使用模糊匹配等情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       在下列情况,虽然存在索引,但是mysql并不会使用相应的索引.

       1.如果mysql估计使用索引比全表扫描更慢,则不使用索引.

       2.如果使用memory/heap表并且where条件中不使用"="进行索引列,那么不会使用到索引.heap表只有在"="的条件下才会使用索引.

       3.用or来分隔开的条件,如果or前的条件中的列有索引,而后面的列中没有索引,那么涉及到的索引都不会被用到.

       4.如果使用到的条件不是复合索引的第一列,那么复合索引也不会被使用.

       5.如果like是以%开始,那么也不会使用索引.

       6.如果列的类型是字符串,但在where条件中把字符串常量值用引号引起来,否则也不会使用索引.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值