構建複合索引
在許多情況下,複合索引的效能優於具有單個列的索引。要構建最佳複合索引,請按此順序使用列填充它。
- 首先從
WHERE
子句中提取=
列。 (例如,INDEX(a,b,...)
forWHERE a=12 AND b='xyz' ...
) IN
column(s); 優化器可能能夠跨越索引。- 一個範圍(例如
x BETWEEN 3 AND 9
,name LIKE 'J%'
)它不會使用超過第一個範圍列的任何內容。 GROUP BY
中的所有列按順序排列ORDER BY
中的所有列按順序排列。只有當所有都是ASC
或者所有都是DESC
或者你使用 8.0 時才有效。
註釋和例外:
- 不要複製任何列。
- 跳過任何不適用的案例。
- 如果你不使用
WHERE
的所有列,就沒有必要繼續使用GROUP BY
等。 - 有些情況下,僅對
ORDER BY
列進行索引是有用的,忽略了WHERE
。 - 不要隱藏函式中的列(例如,
DATE(x) = ...
不能在索引中使用x
。) - ‘字首’索引(例如,
text_col(99)
)不太可能有用; 可能會受傷。
更多細節和提示 。