mysql 模糊查询使用索引问题

使用LIKE %name% 和 LOCATE("name",name),会不会走索引,百度了下说是不会走索引的,尝试了下,好像也会走索引,但是好像走索引了和没走索引查询速度差不多;不知道是不是我的理解有问题

没加了索引的
image.png

image.png

image.png

加了索引的
image.png

image.png

image.png

加了索引的LIKE name%
image.png

阅读 7.9k
2 个回答

首先你直接 select account,where里也只有account条件,account在索引上,此时相当于直接在索引上执行模糊查询,当然能用到索引。
其次,测试explain的时候需要保证够多的数据量以及数据重复率低,否则测出来的结果大概率是错的。
你这图里面都是走了索引的,只不过是整个索引树。

补充:explain参数详解 https://www.cnblogs.com/tufuj...

 Mysql索引结构 http://www.liuzk.com/410.html

如果你想要走索引模糊查询的时候用 'name%',这个是索引原理决定的,就是前缀匹配,如果你知道二叉查找树的实现原理的话,应该就能理解了,当然数据库的实现是B+树。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题