您好,欢迎访问一九零五行业门户网

mysql索引一般使用什么数据结构

myisam是mysql 5.5之前版本默认的存储引擎,从5.5之后,innodb开始成为mysql默认的存储引擎。
myisam使用b-tree实现主键索引、唯一索引和非主键索引。
innodb中非主键索引使用的是b-tree数据结构,而主键索引使用的是b+tree。
b-tree
b-tree(多路搜索树,并不是二叉的)是一种常见的数据结构。使用b-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度。按照翻译,b 通常认为是balance的简称。这个数据结构一般用于数据库的索引,综合效率较高。
性能(推荐学习:mysql视频教程)
b-tree有以下特性:
1、关键字集合分布在整棵树中;
2、任何一个关键字出现且只出现在一个结点中;
3、搜索有可能在非叶子结点结束;
4、其搜索性能等价于在关键字全集内做一次二分查找;
5、自动层次控制;
 b+tree
不同的存储引擎可能使用不同的数据结构存储,innodb使用的是b+tree;
那什么是b+tree呢?
b+tree是应文件系统所需而出的一种b-tree的变型树,一棵m阶的b+树和m阶的b-树的差异在于:
b+和b-(即b)是因为每个结点上的关键字不同。一个多一个,一个少一个。
对于b+树,其结点结构与b-tree相同,不同的是各结点的关键字和可以拥有的子结点数。如m阶b+树中,每个结点至多可以拥有m个子结点。非根结点至少有[m/2]个子结点,而关键字个数比b-tree多一个,为[m/2]~m。
这两种处理索引的数据结构的不同之处:
1。b树中同一键值不会出现多次,并且它有可能出现在叶结点,也有可能出现在非叶结点中。而b+树的键一定会出现在叶结点中,并且有可能在非叶结点中也有可能重复出现,以维持b+树的平衡。
2。因为b树键位置不定,且在整个树结构中只出现一次,虽然可以节省存储空间,但使得在插入、删除操作复杂度明显增加。b+树相比来说是一种较好的折中。
3。b树的查询效率与键在树中的位置有关,最大时间复杂度与b+树相同(在叶结点的时候),最小时间复杂度为1(在根结点的时候)。而b+树的时间复杂度对某建成的树是固定的。
更多mysql相关技术文章,请访问mysql数据库图文教程栏目进行学习!
以上就是mysql索引一般使用什么数据结构的详细内容。
其它类似信息

推荐信息