Mysql

MySQL 200 萬行、longtext 和 varchar 索引

  • April 12, 2015

我正在嘗試為此找到解決方案,但沒有成功。

我有一個大約 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其他兩個欄位的索引。

建議的解決方案:

注意:根據您的 MySQL 版本,使用OR組合條件可能會影響性能。在 5.6 + 中並非如此

引用自:https://dba.stackexchange.com/questions/97633