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

看板Database (資料庫)作者 (一平)時間17年前 (2007/06/27 11:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串9/18 (看更多)
※ 引述《zhman (閒閒的人)》之銘言: : ※ 引述《MugenPower (無限MUGEN)》之銘言: : 我這裡提供一個簡單的一般化方法,就是自己實作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,如果更新頻繁的話,那你可要考量一下時間成本. 上面的方法不會很高深啊,感覺也挺有用的 例如 有人查過 「藥水」 這個詞 第一次作的時候是完整的做出來,並把結果另存在另一張(B)資料表裡 第二次就把上次的結果從另一張資料表裡拿出來 因為(B)資料表裡頭只有一筆,所以找起來當然比幾萬筆快 我相信大多數的人搜尋詞頂多只有幾千則 一定比全部重找來的快 另外,還可以統計哪些詞被搜尋的比較多 被搜尋的少的,可以定時刪掉 然後維持(B)資料表的筆數少一點,減少搜尋次數 搜尋的時候也可以在旁邊列出最多人搜尋的東西 然後針對那些最多人搜尋的東西再做最佳化 我還想到一種方法,乾脆把這個功能讓使用者下載然後在本機電腦上跑 這樣就不用什麼都吃伺服器頻寬跟運算能力 -- 免費工會論壇、DKP網站、報名網站架設: http://gameclub.twbbs.org -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.130.176.205
文章代碼(AID): #16WTfOjl (Database)
討論串 (同標題文章)
文章代碼(AID): #16WTfOjl (Database)