说明一点,大家都知道Mysql有一个联合索引最左原则,但是经过测试发现。
有主键,的联合主键没有遵循最左原则:
有id主键,不走联合索引

Mysql索引及最左原则_数据库

主键联合索引,走索引

Mysql索引及最左原则_mysql_02

唯一联合索引也会走索引

Mysql索引及最左原则_数据_03

下面的解释,我不知道是不是应验了上面的测试:

可能会走到联合索引的,为什么说可能,MYSQL的执行计划和查询的实际执行过程并不完全吻合,比如你数据库数据量很少,可能直接全量遍历速度更快,就不走索引了。

这个解释不能让人信服,感觉,有主键,另有联合索引 最左原则失效。希望大家指正。

SQL性能优化的目标:至少要达到 range 级别,要求是ref级别,如果可以是const最好。说明:

•1)const 单表中最多只有一个匹配行(主键或者唯一索引),在优化阶段即可读取到数据。
•2)ref 指的是使用普通的索引。(normal index)
•3)range 对索引进行范围检索。反例:explain表的结果,type=index,索引物理文件全扫描,速度非常慢,这个index级别比较range还低,与全表扫描是小巫见大巫。