Re: [SQL ] 如何改善 LIKE '%search%' 的效能?
※ 引述《MugenPower (無限MUGEN)》之銘言:
: ※ 引述《statue (statue)》之銘言:
: : 沒辦法確定他是開頭...
: : 像這種全表格的搜尋, 除了減少欄位長度有可能加快速度外,
: : 還有沒有什麼方法可以加快?
: : 還是有辦法讓他不要全表格...
: 難怪一直覺得 S大的ID好眼熟
: 看到[怒氣藥水]才恍然大悟 原來是[艾大] XDDDDD
: 真是失敬失敬
: MySQL 小弟不是很熟悉
: 就小的所知道MySQL內建支援全文檢索 Fulltext search
: 好像有built-in Function
: MATCH (...) AGAINST (...) 小的記得好像有些什麼限制 @@
: 建議艾大可以朝這個方向進行
: 翻翻 manual GOOGLE 一下 有不少資料
: Orz ... 對不起沒幫上忙
MySQL的全文檢索我想並不適合用,尤其是中文的資料,雖然網頁上是講得很好聽,不過試了就知道.
如果你的資料是有特別的結構或pattern,那也許有其他更好的方法.
我這裡提供一個簡單的一般化方法,就是自己實作index,透過cache的方式.
1.開一個新的table,包含2個欄位:(key,id),key就是會被查詢的keyword,id則是對應record的primary key.
2.每次查詢就先查這個table,有資料,那很幸運,你很快就有結果了.
3.沒資料,就重做你原來的like查詢,再把結果insert到這個table中,下次就可以用.
基本假設是你只想知道某個keyword是存在某筆record.其他更詳細的查詢,則需再做其他的變化.
如果你有一些keywords,那可以預先insert一些資料,也可以增加效率.
一旦資料有做更新時,也需要一併keyword的table,如果更新頻繁的話,那你可要考量一下時間成本.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.60.106.5
討論串 (同標題文章)
Database 近期熱門文章
PTT數位生活區 即時熱門文章