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查询耗时,见下图:



















