且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

生产环境一个like模糊匹配SQL优化

更新时间:2022-04-01 22:45:36

1
SELECT s.* FROM pre_common_member s WHERE s.`username` LIKE('%植物大战僵尸%') LIMIT 100;

like后面接'%关键字%' 这样是用不到索引的,会导致全表扫描,这条SQL查询耗时,见下图:

生产环境一个like模糊匹配SQL优化

耗时:27.89秒

----------------------------------------------------------------------------------------

优化方案:

一、如果模糊查询不要求很准确,可以修改为:

1
SELECT s.* FROM pre_common_member s WHERE s.`username` LIKE('植物大战僵尸%') LIMIT 100;

like '关键字%'这样是可以用到索引的,这条SQL查询耗时,见下图:

生产环境一个like模糊匹配SQL优化

耗时:0秒


二、如果模糊查询要求很准确,可以修改为:

1
2
3
select s.* FROM pre_common_member s join
(SELECT uid FROM pre_common_member WHERE username LIKE('%植物大战僵尸%') LIMIT 100)tmp
on s.uid=tmp.uid;

这条SQL查询耗时,见下图:

生产环境一个like模糊匹配SQL优化

耗时:9.17秒












本文转自hcymysql51CTO博客,原文链接:http://blog.51cto.com/hcymysql/1365669 ,如需转载请自行联系原作者