我有這張桌子:
bussid | nameen | keywords
500 name1 name2 keyword1 keyword2
如果使用者搜尋(keyword1或keyword2或name2或name1),我想返回bussid 5000.
所以我應該使用這個查詢select * from business where nameen like』%searching_word%』.
但是這個查詢不使用索引nameen或關鍵字,根據comparison of b-tree and hash indexes「如果like的引數是乙個不以萬用字元開頭的常量字串,索引也可以用於like比較」.
我有這個解決方案,我想建立另乙個表並插入所有單個單詞:
bussid | word
500 name1
500 name2
500 keyword1
500 keyword2
然後我將使用此查詢搜尋bussid:
select * where單詞like』tracked_word%』.
通過這種方式,我將確保mysql將使用索引,它會更快,但這個表將包含大約2000萬行!
還有其他解決方案嗎?
mysql大文字搜尋
mysql內建了三種儲存引擎,分別是innodb,myisam和memory,一般情況下,mysql5.x之後的版本都是使用innodb儲存引擎.三種引擎的對比 innodb 支援事務操作 支援自動增加列 具有行級鎖定 myisam 不支援事務,也不支援外來鍵,但是訪問速度快 對大文字搜尋效能較好 ...
MYSQL全文本搜尋
為了進行全文本搜尋,必須索引被搜尋的列,而且要隨著資料的改變不斷的重新索引。對表列進行適當的改進後,mysql會自動進行所有的索引和重新索引。優點 效能快明確控制 智慧型化的結果 fulltext 列名 mysql對該列索引自動更新 使用match 被搜尋的列 against 指定要使用的搜尋表示式...
MySQL的全文本搜尋
我們在使用mysql時,一般會用到兩種引擎 myisam和innodb,myisam支援全文本搜尋,但不支援事務處理 而innodb支援事務處理,但不支援全文本搜尋。一 有時,我們需要使用全文本搜尋,例如 要搜尋文字中存在指定的某個詞,且以這個詞出現的順序排序。先建立支援全文本搜尋的表 create...