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秒