为什么数据库会让我们选择字段的顺序呢?不都是三个字段的联合索引么?这里就引出了数据库索引的最重要的原则之一,最左匹配原则。
...一、最左匹配原则的原理
MySQL 建立多列索引(联合索引)有最左匹配的原则,即最左优先:
如果有一个 2 列的索引 (a, b),则已经对 (a)、(a, b) 上建立了索引;
如果有一个 3...列索引 (a, b, c),则已经对 (a)、(a, b)、(a, b, c) 上建立了索引;
假设数据 表 LOL (id,sex,price,name) 的物理位置(表中的无序数据)如下:
(...,所以只能把 a = 1 的数据主键ID都找到,通过查到的主键ID回表查询相关行,再去匹配 c = ‘JJJ疾风剑豪’ 的数据了,当然,这至少把 a = 1 的数据筛选出来了,总比直接全表扫描好多了。...这就是MySQL非常重要的原则,即索引的最左匹配原则。
三、查询优化器偷偷干了哪些事儿
当对索引中所有列通过"=" 或 “IN” 进行精确匹配时,索引都可以被用到。