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

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

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

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

耗时:27.89秒

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

优化方案:

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

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

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

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

耗时:0秒


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

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秒



本文出自 “贺春旸的技术专栏” 博客,请务必保留此出处http://hcymysql.blog.51cto.com/5223301/1365669

生产环境一个like模糊匹配SQL优化,布布扣,bubuko.com

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

上一篇:php操作mysql


下一篇:PS制作倒影水面效果教程