Re: [SQL ] 如何改善 LIKE '%search%' 的效能?

看板Database (資料庫)作者 (閒閒的人)時間17年前 (2007/06/25 10:35), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串5/18 (看更多)
※ 引述《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
文章代碼(AID): #16VodtYo (Database)
討論串 (同標題文章)
文章代碼(AID): #16VodtYo (Database)