1
|
SELECT s.* FROM pre_common_member s WHERE s.`username` LIKE(
'%植物大战僵尸%'
) LIMIT
100
;
|
like后面接'%关键字%' 这样是用不到索引的,会导致全表扫描,这条SQL查询耗时,见下图:
耗时:27.89秒
----------------------------------------------------------------------------------------
优化方案:
一、如果模糊查询不要求很准确,可以修改为:
1
|
SELECT s.* FROM pre_common_member s WHERE s.`username` LIKE(
'植物大战僵尸%'
) LIMIT
100
;
|
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查询耗时,见下图:
耗时:9.17秒
本文转自hcymysql51CTO博客,原文链接:http://blog.51cto.com/hcymysql/1365669 ,如需转载请自行联系原作者