SELECT s.* FROM pre_common_member s WHERE s.`username` LIKE(‘%植物大战僵尸%‘) LIMIT 100;
like后面接‘%关键字%‘ 这样是用不到索引的,会导致全表扫描,这条SQL查询耗时,见下图:
耗时:27.89秒
----------------------------------------------------------------------------------------
优化方案:
一、如果模糊查询不要求很准确,可以修改为:
SELECT s.* FROM pre_common_member s WHERE s.`username` LIKE(‘植物大战僵尸%‘) LIMIT 100;
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查询耗时,见下图:
耗时:9.17秒
本文出自 “贺春旸的技术专栏” 博客,请务必保留此出处http://hcymysql.blog.51cto.com/5223301/1365669