联合索引
总:联合索引我的理解是逻辑上的几个索引的合
例如:A、B、C三个列创建的联合索引
(A)、(A、B)、(A、B、C)
索引被使用和索引出现的顺序无关
上案例:
表:
CREATE TABLE `t_index` (
`A` varchar(255) DEFAULT NULL,
`B` varchar(255) DEFAULT NULL,
`C` varchar(255) DEFAULT NULL,
`D` varchar(255) DEFAULT NULL,
KEY `clum_index` (`A`,`B`,`C`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
A的执行计划:
EXPLAIN select * from t_index where a='123';
AB的执行计划:和顺序无关
EXPLAIN select * from t_index where a='123' and b='123';
EXPLAIN select * from t_index where b='123' and a='123';
ABC的执行计划:和abc出现的顺序无关
EXPLAIN select * from t_index where b='123' and a='123' and c='123' ;
注:有人说还有一个ac的也是我不知道我的理解对不对:
EXPLAIN select * from t_index where a='123' and c='123' ;
23’ ;
![在这里插入图片描述](https://img-blog.csdnimg.cn/a13aa01e7fc24edb94e7c07b846a8360.png#pic_center)
这里其实是一列的,感觉是应该是有一个没有被使用到。