構建複合索引
在許多情況下,複合索引的效能優於具有單個列的索引。要構建最佳複合索引,請按此順序使用列填充它。
- 首先從
WHERE子句中提取=列。 (例如,INDEX(a,b,...)forWHERE a=12 AND b='xyz' ...) INcolumn(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))不太可能有用; 可能會受傷。
更多細節和提示 。