Mysql
MySQL 200 萬行、longtext 和 varchar 索引
我正在嘗試為此找到解決方案,但沒有成功。
我有一個大約 2M 行的表,我需要使用 OR 使用 3 個表達式執行 WHERE。
name LIKE '%PARAM%' OR text1 LIKE '%PARAM%' OR text2 LIKE '%PARAM%' ORDER BY views DESC
名稱是一個 varchar
text1 和 text2 是長文本(每個約 6000 個字元)
text1 and text2 are indexed FULLTEXT name is indexed BTREE, views too.
該表是MyISAM,它沒有很多更新,但有很多選擇;
查詢大約需要 12 秒才能完成。
抱歉,如果這個問題已經存在,但我找不到這個。
感謝你
每次執行此查詢都會掃描整個表,原因有兩個:
name
將不會使用索引,因為該值以萬用字元開頭%
- 您沒有使用正確的函式來利用
fulltext
其他兩個欄位的索引。建議的解決方案:
- 在欄位上添加
fulltext
索引name
- 使用適當的功能進行搜尋。在這種情況下,它是
match
:https ://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html#function_match注意:根據您的 MySQL 版本,使用
OR
組合條件可能會影響性能。在 5.6 + 中並非如此