MySQL组成元素_Mysql索引本质和数据结构

一、本质:索引是帮助Mysql高效获取数据的排好序的 数据结构。

二、索引数据结构:(图一)示例图二叉树

缺点:当节点是递增的情况下(如图一的Col1字段),二叉树会类似成一个链表(如下图),查询d的效率跟没有添加索引的时候是一样的。二叉树的弊端红黑树

原理:当父节点右边的节点数减去左边的节点数等于2的时候,红黑树会自动平衡,性能比二叉树好点。红黑树相当于平衡二叉树。

缺点:当数据量比较大的时候,红黑树的高度会越高,查询效率会越低。(树的高度越高,io查询次数越多)红黑树(平衡二叉树)B-TreeB-Tree结构B+ Tree:Mysql索引底层使用的数据结构。B+Tree结构

B+Tree 和B-Tree的区别:

(1) B+Tree 非叶子节点没有data元素(好处:Mysql默认一个节点最多可以存储16k, 非叶子节点不存储data元素,可以有更多的空间去存储索引,使得索引查询更快。)

(2) B+Tree 叶子节点之间有指针(好处:提高区间访问的性能。)

MyISAM存储引擎索引实现:

Myisam的索引文件的data元素是存储数据文件所在行的磁盘文件地址指针。

Innodb存储引擎索引实现(聚集):

Innodb索引的data元素是存放所在行的其他字段数据。

聚集索引:叶子节点包含了完整的数据记录(聚集索引是指索引和数据包含在一起)

为什么Innodb表必须有主键,并且推荐整型的自增主键?

数据查询是需要比较的,用整型的数据当主键,比较的效率更快(整型数据比字符串数据比较效率快,而且存储空间小)。

使用自增主键的目的是为了避免数据索引在更新的时候,对整个B+Tree的重新排序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值