为什么不符合最左匹配原则?
来源:3-9 索引额外问题之最左匹配原则的成因
qq_撞碎南墙_0
2019-02-16
EXPLAIN select * from user where deptId=1;
1 SIMPLE user index age 41 106131 Using where; Using index
EXPLAIN select * from user where age=1;
1 SIMPLE user ref age age 5 const 1 Using index
ddl
CREATE TABLE user
(id
int(11) NOT NULL AUTO_INCREMENT,age
int(11) DEFAULT NULL,deptId
varchar(11) DEFAULT NULL,
PRIMARY KEY (id
),
KEY age
(age
,deptId
) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=105819 DEFAULT CHARSET=utf8;
和视频中的最左匹配原则对不上呢?,为什么单独用deptId查询时,还是能用到索引呢
写回答
1回答
-
翔仔
2019-02-16
同学好,当不用最左边的搜索的时候,可以注意看看它的possible keys为null。但是实际运行的时候,sql 解析器会按照它的最优方式去检索,它解析你的key先按照age走效率更高,也能查出数据,所以最左匹配只是一个原则,实际还要依赖于解析器的判断,
这里的Extra是Using where; Using index,key是age,表明发生了索引扫描,因为where条件不是最左列的缘故,其性能也是差于key为ref的
10
相似问题