mysql多列索引

Posted 张三的哥哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql多列索引相关的知识,希望对你有一定的参考价值。

1,数据库每次查询只能使用一个索引

2,假设数据 表T (a,b,c) rowid 为物理位置
rowid a b c
(1) 1 1 1
(2) 2 1 13
(3) 2 2 14
(4) 1 3 3
(5) 2 3 12
(6) 1 2 5
(7) 2 3 9
(8) 1 2 2
(9) 1 3 6
(10) 2 2 11
(11) 2 2 8
(12) 1 1 7
(13) 2 3 15
(14) 1 1 4
(15) 2 1 10

当你创建一个索引 create index xxx on t(a,b), 则索引文件逻辑上等同于如下
a b rowid
1 1 1
1 1 12
1 1 14
1 2 6
1 2 8
1 3 4
1 3 9
2 1 2
2 1 15
2 2 3
2 2 10
2 2 11
2 3 5
2 3 7
2 3 13

当select * from T where a=1 and b=3 的时候, 数据库系统可以直接从索引文件中直接二分法找到A=1的记录,然后再B=3的记录。
但如果你 where b=3 则需要遍历这个索引表的全部!

 

3,通过上面实例可知,索引类似goup,联合索引中下一个元素是在符合上一个元素条件记录中查找相关记录。






































以上是关于mysql多列索引的主要内容,如果未能解决你的问题,请参考以下文章

MySQL中多列索引的字段顺序是不是重要

mysql索引的艺术 单列索引与多列索引的区别

mysql单列索引多列索引的使用

MySQL处理重复键错误插入具有多个唯一索引的表;不是多列唯一索引

mysql:在这种情况下索引多列的最佳方法是啥

MySQL 最左前缀(Leftmost Prefix) & 组合索引(复合索引,多列索引)