假设有一张users表,表中有uname1,uname2,uname3,uname4四个字段,现同一搜索框对这四个字段进行模糊查询,并根据最接近搜索关键词进行排序,目前的搜索语句如下:
select *,length(if(uname1 like "%{$keyword}%",uname1,if(uname2 like "%{$keyword}%",uname2,if(uname3 like "%{$keyword}%",uname3,uname4)))) as len from users where uname1 like "%{$keyword}%" or uname2 like "%{$keyword}%" or uname3 like "%{$keyword}%" or uname4 like "%{$keyword}%" order by len ASC limit 0,10
请高手看看有木有优化的方法,帮忙优化一下,感激不尽!
解决方案
50
索引不起作用呗。
索引在 进行like “%xxx%”的时候是不起作用的。
所以,你可以用全文索引试试,具体的sql 语句写法会有不同,你可以在网上搜一下