構建複合索引

在許多情況下,複合索引的效能優於具有單個列的索引。要構建最佳複合索引,請按此順序使用列填充它。

  • 首先從 WHERE 子句中提取 = 列。 (例如,INDEX(a,b,...) for WHERE a=12 AND b='xyz' ...
  • IN column(s); 優化器可能能夠跨越索引。
  • 一個範圍(例如 x BETWEEN 3 AND 9name LIKE 'J%')它不會使用超過第一個範圍列的任何內容。
  • GROUP BY 中的所有列按順序排列
  • ORDER BY 中的所有列按順序排列。只有當所有都是 ASC 或者所有都是 DESC 或者你使用 8.0 時才有效。

註釋和例外:

  • 不要複製任何列。
  • 跳過任何不適用的案例。
  • 如果你不使用 WHERE 的所有列,就沒有必要繼續使用 GROUP BY 等。
  • 有些情況下,僅對 ORDER BY 列進行索引是有用的,忽略了 WHERE
  • 不要隱藏函式中的列(例如,DATE(x) = ... 不能在索引中使用 x。)
  • ‘字首’索引(例如,text_col(99))不太可能有用; 可能會受傷。

更多細節和提示