Re: [SQL ] 如何改善 LIKE '%search%' 的效能?
看板Database (資料庫)作者DarkKiller (System hacked)時間7年前 (2017/08/15 23:05)推噓1(1推 0噓 0→)留言1則, 1人參與討論串15/18 (看更多)
居然是十年前的文章... (想說居然是 Xapian...)
如果你的資料量還會再增加的話,現在主流的方式是用 Elasticsearch (ES) 架
設,你可以翻翻這本中文書:(雖然是講怎麼分析的,但 ES 本身就有全文搜尋的
能力)
https://www.kingstone.com.tw/book/book_page.asp?kmcode=2013120359772
如果沒辦法另外架設服務的話,另外架一台 MySQL server 跑 replication 同步
,這台 server 獨立給 search 用也是一個方法... (國內某大站台以前是這樣的
架構)
※ 引述《liisi (小心一點)》之銘言:
: 大家午安
: 目前也是遇到 like '%關鍵字%' 效能會變差的問題
: 網站的商品數 超過一百萬筆
: 網站的使用族群 是所有消費者
: 透過關鍵字 來模糊搜尋商品名稱 甚至是二個以上的關鍵字來搜尋
: ( 商品名稱 like '%關鍵字A%' or 商品名稱 like '%關鍵字B%' )
: 測試過時間 需要 2 ~ 2.4秒左右
: 爬文了 也google過 了解如果把%放在前頭 會讓索引無效
: 我也自己試了一下 '關鍵字%' 時間0.0005秒 (也差太多了....)
: 但是關鍵字搜尋 不太可能用 like '關鍵字%'找資料
: 用其他的語法 locate試了一下 也是很慢
: 想請問大家 在語法的部分 目前還沒辦法解決嗎?
: ※ 引述《DarkKiller (System hacked)》之銘言:
: : MySQL 的 %...% 一定是 table scan,如果資料是拉丁語系資料,用 MySQL
: : 提供的 fulltext index 做。
: : 如果是 CJK 用專門的 fulltext search engine 做,像 Lucene (或 CLucene),
: : 另外還需要了解一些目前切詞常用到的基礎原理。
: : ==
: : 另外我自己幫 pixnet 架的是 Xapian,目前已經在內部測試了...
--
Resistance is futile.
https://blog.gslin.org/ & <gslin@gslin.org>
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.116.104.21
※ 文章網址: https://www.ptt.cc/bbs/Database/M.1502809505.A.036.html
推
08/16 08:55, , 1F
08/16 08:55, 1F
討論串 (同標題文章)
Database 近期熱門文章
PTT數位生活區 即時熱門文章