优秀的编程知识分享平台

网站首页 > 技术文章 正文

数据库索引失效的 种情况(数据库索引失效的几种情况)

nanyue 2024-10-28 16:39:39 技术文章 20 ℃

类型不匹配

这种情况比较常见而且不易被发现,比如当我们定义了一个 varchar类型的字段

并且设置成索引

当执行select 语句的时候,where 后面的条件是数字类型

虽然能够执行成功,但底层是Mysql 进行了隐式转换,索引就失效了。我们改成字符串索引就可以生效了。

对索引使用函数

当我们想查询手机号码前三位是 133的用户,执行下面是sql

但当我们执行explain的时候会发现,并没有使用索引。

这种情况我们可以用like 改造我们的sql

通过前缀匹配,我们就可以正确地使用索引了。

左模糊匹配

那是不是用上like 就可以使用上索引呢,没那么简单,我们看下面的sql

上面的sql 使用了左模糊匹配,通过explain可以看到这个sql 也没有使用索引。由于索引在mysql 里面是通过B+树组织的,只能支持右模糊匹配。

联合索引顺序匹配

这种主要是在联合索引下才会出现,比如下面年龄和电话的组合索引

我们可以查询年龄为20岁的用户

但直接查电话号码,索引就失效了。

最近发表
标签列表