淘先锋技术网

首页 1 2 3 4 5 6 7

在面试MySQL时, 有一个重要的原则需要了解, 就是最左匹配原则.

面试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时, 尽量使用最左匹配规则, 以获得更好的性能表现.