欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

一天一篇mysql之十七:mysql中的关键字like优化

程序员文章站 2022-03-06 17:49:09
...

LIKE 运算符用于 WHERE 表达式中,以搜索匹配字段中的指定内容。那么like如何进行优化呢?这篇博客就简单讨论一下like的优化。

不优化的情况

先建立索引

ALTER TABLE `actor`
ADD INDEX `idx_actor_first_name` (`first_name`) USING BTREE ;

不优化情况下的查询,发现并没有使用索引

一天一篇mysql之十七:mysql中的关键字like优化

1.%号不放最左边

一天一篇mysql之十七:mysql中的关键字like优化

2.使用覆盖索引

如果业务需要%就放开头我们也没办法,一般情况需求都是这样的,毕竟优化还是为业务服务的。

这个时候可以考虑使用覆盖索引(关于覆盖索引:MySQL系列-优化之覆盖索引),假设业务需要通过name来获取用户的age的话,我们可以对last_name、first_name字段建立复合索引。

ALTER TABLE `actor`
DROP INDEX `idx_actor_first_name` ,
ADD INDEX `idx_actor_first_name_lastname` (`first_name`, `last_name`) USING BTREE ;

效果如图:

一天一篇mysql之十七:mysql中的关键字like优化

可以看到,查询是覆盖索引的,起码比全表扫描要好。

如果需要更多字段的数据而不单单是first_name的话,可以进行两次查询,第一次通过name来获取id(这一步是索引扫描),第二步拿获取来的数据在进行id匹配查询(这一步效率很高,ref或者const)。

相关标签: mysql