数据库索引失效的 种情况

数据库索引失效的 种情况类型不匹配这种情况比较常见而且不易被发现 比如当我们定义了一个 varchar 类型的字段并且设置成索引当执行 select 语句的时候 where 后面的条件是数字类型虽然能够执行成功 但底层是 Mysql 进行了隐式转换 索引就失效了 我们改

欢迎大家来到IT世界,在知识的湖畔探索吧!

类型不匹配

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

数据库索引失效的 种情况

并且设置成索引

数据库索引失效的 种情况

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

数据库索引失效的 种情况

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

数据库索引失效的 种情况

对索引使用函数

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

数据库索引失效的 种情况

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

数据库索引失效的 种情况

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

数据库索引失效的 种情况

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

左模糊匹配

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

数据库索引失效的 种情况

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

联合索引顺序匹配

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

数据库索引失效的 种情况

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

数据库索引失效的 种情况

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

数据库索引失效的 种情况

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/94709.html

(0)
上一篇 2024年 12月 5日 下午9:15
下一篇 2024年 12月 6日 上午7:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信