面试问题之Mysql like索引失效

like 索引使用

大家Mysql索引有最左原则,所以通过 like '%XX%'查询的时候会造成索引失效,一般采用like 'XX%'右边匹配的方式来索引。但是这样一定会使用索引不

like 使用

创建SQL

CREATE TABLE `user` (
  `ID_` bigint(20) NOT NULL AUTO_INCREMENT,
  `AGE_` int(11) DEFAULT NULL,
  `NAME_` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`ID_`),
  UNIQUE KEY `NAME_` (`NAME_`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4

#插入三条数据
INSERT INTO `user` VALUES ('1', '1', '测试1.1'), ('2', '2', '测试2.2'), ('3', '3', '测试3');

案例1: like ‘%测试%’

EXPLAIN select * from user where NAME_ like '%测试';

EXPLAIN结果如下:type=ALL,key=null,说明全表扫描没有使用索引
在这里插入图片描述
案例2: like ‘测试%’

EXPLAIN select * from user where NAME_ like '测试%';

EXPLAIN结果如下:type=ALL,key=null,rows=3检索出所有数据,说明全表扫描没有使用索引
在这里插入图片描述
案例3: like ‘测试1%’

EXPLAIN select * from user where NAME_ like '测试1%';

EXPLAIN结果如下:type=range,key=NAME_,rows=1检索出一条数据,说明使用了索引
在这里插入图片描述

总结

从上面三个案例可以看出,like ‘xxxx%’ 时不一定100%使用索引,是否使用索引与该条件数量和数据总量比例有关

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值