最左匹配原则意味着,在联合索引中,查询条件必须使用索引的最左侧列,才能确保索引被有效利用。如果查询条件没有包含最左侧的列,即使后续的列在索引中存在,也无法利用该索引来优化查询。这一原则的目的是确保数据库能够最高效地利用索引结构,从而加速查询过程。
举例说明
假设有一个联合索引 (a, b, c)
,那么以下几种查询情况会表现出不同的索引利用效果:
- 当查询条件为
a = ?
时,可以充分利用索引,因为a
是最左侧的列。 - 当查询条件为
a = ? AND b = ?
时,同样可以充分利用索引,因为查询包含了最左侧的列a
。 - 当查询条件为
b = ?
时,无法利用索引,因为b
不是最左侧的列。 - 当查询条件为
a = ? AND c = ?
时,虽然查询包含了最左侧的列a
,但是由于中间跳过了列b
,所以c
列的索引将不会被使用。 - 当查询条件为
b = ? AND c = ?
时,查询没有包含了最左侧的列a
,所以b列和c列的索引将不会被使用
此外,如果查询中涉及到范围查询(如 >
、<
、BETWEEN
、LIKE
等操作符),则在该列之后的索引列都会停止匹配。例如,在查询 a = ? AND b > ? AND c = ?
中,虽然 a
和 b
都在索引中,但由于 b
是一个范围查询,所以 c
列的索引将不会被使用。