B-Tree索引

当我们谈论索引的时候,如果没有特别指明,它指的就是B-Tree索引,它使用B-Tree数据结构来存储数据。实际上,很多存储引擎使用的是B+Tree索引。

MyISAM使用前缀压缩技术使得索引更小,而InnoDB按照原来的数据格式进行存储。

B-Tree意味着所有的值都是顺序存储的,并且每一个叶子到根的距离相等。B-Tree索引能够加快查找的速度,是因为存储引擎不需要再进行全表扫描,取而代之的是在索引树上进行查找。B-Tree的世界复杂度可以做到log(n)。B-Tree的深度和表的大小直接相关。

索引对多个值进行排序,是依据它们在create table语句中指定的顺序进行的。

可以使用B-Tree索引的查询类型有如下几种。

1,全值匹配

2,匹配最左前缀

3,匹配最前列

4,精确匹配某一列并范围匹配另一列

5,只访问索引的查询。这种也称为覆盖索引。

因为索引中的节点是有序的,所以除了支持按值查找外,索引还支持查询中的order by操作。

关于B-Tree索引的一些限制。

1,如果不是按最左列进行查找,则无法使用索引。

2,不能跳过索引中的列。例如索引有3列,c1,c2,c3,不能以c1和c3为查询条件,此时是无法使用索引的。

3,如果查询中有某个列是范围查询,那么右边所有列都无法使用索引优化查找。

你可能感兴趣的:(MySQL数据库)