大家好,我是神韵,是一个技术&生活博主。据说是21天成一习惯,那么有没有一个习惯可以让你坚持一年的?我来试试! 每周5讲从2021-7-19开始,今天是2021-8-01,一轮计划是2022-7-18结束。关于文章都是定位为基础,我不敢讲的太深入,因为我怕自己没时间。欢迎来点赞打卡,你们的行动将是我无限的动力。 今日主题是:MySQL的索引数据结构为啥选用B+树?
话不多说,下面进入今天主题
B+Tree 为啥MySQL索引底层采用的是B+树,因为它具有如下几个特点
- 层次少,检索(IO)次数少
- 叶子节点不仅存索引也存数据
- 叶子节点索引是有序的,递增,对范围条件查询效率高
我们在看一下其他数据结构: 1、二分查找结构 二分查找结构前提是有序,故不适合做索引
2、二叉树 二叉树虽然简单,但是可能会存在一边树的层次太多,另一边少,对于层次多的检索次数会很多,故不适合用做索引
3、平衡二叉树 与二叉树对比,层次会自动平衡,虽然解决了二叉树的单边层次问题,但是解决的不透彻,当数据量大时,整体层次依然没有得到很好的改善。
4、BTree(多路平衡数,一个节点存储多个数据) 与平衡二叉树对比,B树层次得到很好的控制,等值(=)查询时,效率特别高。但是Mysql会大量使用范围查询(<、>等),BTree对于这些查询不友好,效率特别低。故不适合做索引。
本文结束! ps:私信我可以进群。公众号每天会有推送,欢迎关注公众号查阅。
|