MySQL索引失效的原因

虽然数据库设置了索引,但在某些情况下,数据库可能无法使用这些索引来优化查询。以下是几种可能导致索引无法使用的情况:

  1. 以“%”开头的 LIKE 语句,模糊匹配。
  2. OR 语句前后字段没有同时使用索引。
  3. 不满足最左前缀原则。
  4. 数据类型出现隐式转换(如 varchar 不加单引号的话可能会自动转换为 int)。
  5. where 语句索引列上使用数学运算(例如:where a = a + 1)。
  6. where 语句索引列上使用函数运算。
  7. 表数据量较小时,此时全表扫描不一定比走索引慢,此时索引失效。

不推荐使用索引的情况

  1. 表数据量小的时候最好不使用索引。
  2. 频繁更新的字段不要使用索引。
  3. 数据唯一性差的字段不要使用索引(比如性别,只有两种可能数据。意味着索引的二叉树级别少,多是平级。这样的二叉树查找无异于全表扫描)。
  4. where 子句里对索引列使用不等于(<>),使用索引效果一般。
  5. 字段不在 where 语句出现时不要添加索引,如果where后含IS NULL /IS NOT NULL/ like ‘%输入符%’等条件,不建议使用索引。
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值