生动讲解MYSQL中MySAM和InnoDB实现B树索引方式的区别是什么?

MyISAM,B+Tree叶节点的data域存放的是数据记录的地址,在索引检索的时候,首先按照B+Tree搜索算法搜索索引,如果指定的key存在,则取出其data域的值,然后以data域的值为地址读取相应的数据记录,这被称为非聚簇索引

上面的这段话这么想:

在一个所有结点均为非空的二叉树中,要查找一个叶子节点的值,当然要通过一定的算法就比如说前序遍历,中序遍历,后序遍历等等的方式去寻找对应的二叉树结点,查找到了之后自然要取出结点中的值,如果二叉树的节点中存放的值是指针,那么在取出之后,还要进行解引用操作去取到指针中存放的地址的值

InnoDB,其数据文件本身就是索引文件,相比MyISAM,索引文件和数据文件是分离的,其表数据文件本身就是按B+Tree组织的一个索引结构,树的节点data域保存了完整的数据记录,这个索引的key是数据表的主键,因此InnoDB表本身就是主索引,这被称为聚簇索引或者聚集索引,而其余的索引都作为辅助索引,辅助索引的data域存储相应主键的值而不是地址,这也是和MyISAM不同的地方。

上面的这段话这么想:

也是在一个所有结点均为非空的二叉树中,相比于上面的那个二叉树,当前的这个二叉树的节点存储的就是值,要查找一个叶子节点,直接查找到相应的节点即可。

在根据主索引搜索时,直接找到key所在的节点即可取出数据;在根据辅助索引查找时,则需要先取出主键值,再走一遍主索引。因此,在设计表的时候,不建议使用过长的字段为主键,也不建议使用非单调的字段作为主键,这样会造成主索引频繁分裂

//这个八股文栗子举得不好,还要再想想 23-9-19 10:17

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值