索引最左匹配原則要求多列索引查詢時,必須從最左邊的列開始連續匹配條件,違反此原則將導致全表掃描。
MySQL 索引最左匹配原則
什么是索引最左匹配原則?
索引最左匹配原則規定,對于多列索引,查詢條件中必須從最左邊的列開始匹配,且匹配條件必須連續。
詳細解釋
例如,假設存在一個索引 (a, b, c)。對于以下查詢:
SELECT * FROM table WHERE a = 1 AND b = 2;
登錄后復制
索引最左匹配原則要求 a 列必須首先匹配,然后才能匹配 b 列。也就是說,索引只能用于匹配 a = 1,而 b = 2 條件無法使用索引,因為它不是連續匹配。
因此,對于此查詢,MySQL 不會使用索引,而是執行全表掃描。
優勢
最左匹配原則有助于優化查詢性能,因為它確保索引可以有效地篩選數據。通過強制連續匹配條件,索引可以跳過不必要的行,從而減少 I/O 操作和提高查詢速度。
例外
在某些情況下,最左匹配原則可能不會被完全遵循,例如:
范圍查詢: 對于范圍查詢,索引會被用于匹配最左邊的列,但后續列可以是非連續匹配。
索引覆蓋: 如果索引包含查詢中所有返回的列,則即使條件不滿足最左匹配原則,MySQL 也可能會使用索引。
最佳實踐
為了充分利用最左匹配原則,請遵循以下最佳實踐:
始終在查詢中指定索引中包含的所有列。
避免使用 OR 條件,因為它們可能破壞最左匹配原則。
使用分片索引來覆蓋常見的查詢模式。