SELECT s.* FROM pre_common_member s WHERE s.`username` LIKE('%植物大战僵尸%') LIMIT 100;
like后面接'%关键字%' 这样是用不到索引的,会导致全表扫描,这条SQL查询耗时,见下图:
----------------------------------------------------------------------------------------
优化方案:
一、如果模糊查询不要求很准确,可以修改为:
SELECT s.* FROM pre_common_member s WHERE s.`username` LIKE('植物大战僵尸%') LIMIT 100;
like '关键字%'这样是可以用到索引的,这条SQL查询耗时,见下图:
二、如果模糊查询要求很准确,可以修改为:
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查询耗时,见下图: