在面试MySQL时, 有一个重要的原则需要了解, 就是最左匹配原则.
什么是最左匹配原则呢?
最左匹配原则简单来说是在多列联合索引中, where
后面的查询条件尽量使用最左边的列, 而不是右边的列.
看一个例子: 我们有一个表 t, 其中有一个联合索引 idx(a, b, c), 内容如下:
a b c 1 2 3 1 2 4 2 2 3 2 2 4
假设我们要查询 a=1 and b=2 and c=4, 我们使用以下两种查询方法:
-- 第一种查询, 使用最左原则 select * from t where a=1 and b=2 and c=4; -- 第二种查询, 不使用最左原则 select * from t where b=2 and c=4 and a=1;
通过执行计划可以发现, 第一种查询方式使用了联合索引 idx(a, b, c), 而第二种查询方式没有使用联合索引, 而是使用了全表扫描.
这是因为MySQL默认使用库匹配规则, 即对于联合索引, 需要从最左边的列进行匹配, 如果不从最左边的列开始匹配, 那么就需要扫描整个表, 效率会大大降低.
所以在面试MySQL时, 当面试官问到最左匹配原则时, 表示面试官想考察你对于索引的了解程度. 同时, 这也提醒我们, 在使用MySQL时, 尽量使用最左匹配规则, 以获得更好的性能表现.