如何用索引表優化 MySQL 千萬級數據的模糊搜索?

如何用索引表優化 MySQL 千萬級數據的模糊搜索?

如何優化 mysql 千萬數據量的模糊搜索

對于包含千萬數據量的 mysql 數據庫中模糊搜索的性能優化,一個簡單的想法是創建類似下表的索引:

索引表  | 當前詞 | 下一詞 | 原記錄主鍵 id | |---|---|---| | mysql | 一 | 1 | | 一 | 千 | 1 | | 千 | 萬 | 1 | | 萬 | 的 | 1 | | ... | ... | ... | | 模 | 糊 | 1 | | 糊 | 搜 | 1 | | 搜 | 索 | 1 | | 索 | null | 1 |

以此方式,我們可以在該索引表中高效地搜索“模糊搜索”,使用如下 sql 查詢:

SELECT 原記錄主鍵ID FROM (SELECT 原記錄主鍵ID FROM 索引表 WHERE 當前詞 = '模' AND 下一詞 = '糊') JOIN (SELECT 原記錄主鍵ID FROM 索引表 WHERE 當前詞 = '糊' AND 下一詞 = '搜') USING(原記錄主鍵ID) JOIN (SELECT 原記錄主鍵ID FROM 索引表 WHERE 當前詞 = '搜' AND 下一詞 = '索') USING(原記錄主鍵ID) JOIN (SELECT 原記錄主鍵ID FROM 索引表 WHERE 當前詞 = '索' AND 下一詞 IS NULL) USING(原記錄主鍵ID)

這種方法可以有效地縮小搜索范圍,從而提高模糊搜索的性能,在秒級內完成搜索。

? 版權聲明
THE END
喜歡就支持一下吧
點贊10 分享