mysql 進行暱稱搜尋模糊查詢,如果使用者多了 like 查詢會很慢,請問如何解決?
mysql 進行暱稱搜尋模糊查詢,如果使用者多了 like 查詢會很慢,請問如何解決?
在資料庫的此表中的暱稱這個欄位建立索引
key `nikename`(`nikename`)
全文索引配合sql語句
ALTER TABLE `user` ADD FULLTEXT `fidx_user_nikename` (`nickname`)
然後用以下方式查詢
<code>SELECT * FROM \`user\` WHERE MATCH (nickname)AGAINST ('xxx')</code>
如果是like %name%,那在我的認知範圍內是沒轍了,如果前邊沒有%可以建索引,或者試試LOCATE函數,不過估計沒啥效果。
instr呢?
模糊搜尋的話,上分詞吧。 sphinx coreseek 或xunsearch(迅搜)
如果你的mysql版本大於5.7, 自帶ngram全文索引支援中文分詞,我在專案中已用,用法網上已經有教程了
使用搜尋引擎,把常用搜尋的欄位索引起來,然後在結合快取一起使用