前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL数据库为什么索引使用B+树而不是B树

MySQL数据库为什么索引使用B+树而不是B树

作者头像
IT学习日记
发布2022-09-13 16:07:15
5300
发布2022-09-13 16:07:15
举报
文章被收录于专栏:IT知识进阶学习

前言

  MySQL数据库是日常开发或者面试中最常遇到的数据库之一,你在使用过程是否有过类似的疑问:为什么它的索引使用的设计结构是B+树而不是B树呢?下面一起来看看吧。

详解

  在看两者的区别时,先看看两者的数据结构图片,可以有更直观的感受。

image.png
image.png
  • B+树空间利用率更高、可减少I/O次数,磁盘读写代价更低(因为索引文件较大,一般不直接存储在内存中,一般是以索引文件的形式存储在磁盘上,这样,索引的查找就存在磁盘I/O ,B+树的内部节点没有指向具体信息的指针,只是作为索引使用,其内部节点比B树要小,快能够容纳的结点关键数量更多,一次性读入内存中的关键字也更多,相对的I/O次数也减少了,而I/O读写次数是影响索引检索效率的最大因素)
  • B+树的查询效率更加稳定。B树搜索可能会在非叶子结点结束,越靠近根节点记录查询时间越短,只要找到关键字即可确定记录的存在,其性能相当于在关键字全集内做一次二分查找。而B+树任何关键字的查询都必须从根节点到叶子结点,所有的关键字的查询路径长度一样,导致每一个关键字的查询效率相当。
  • B+树的叶子节点使用指针顺序连接在一起,只要遍历叶子节点就可以实现整棵树的遍历,而且在数据库中基于范围的查询是非常频繁的,而B树不支持这样的操作。
  • 增删文件(节点)时,效率更高。因为B+树的叶子节点包含所有关键字,并以有序的链表结构存储,这样可很好提高增删效率
  • B树只适合随机检索,而B+树同时支持随机检索和顺序检索。

额外科普-创建索引的方式

1、在创建表的时候创建

代码语言:javascript
复制
create table xx(

    key keyname(列名1、2)

    FULLTEXT KEY(列名)

    UNIQUE KEY(列名)

)

2、使用alter table 添加(可以添加普通、唯一、主键索引)

代码语言:javascript
复制
alter table 表名 add index indexname(字段名)

3、使用create index命令创建普通索引和唯一索引,不能创建主键索引

代码语言:javascript
复制
create index indexname on 表名 (字段名)

写在最后

  经验就是一个积累的过程,没有谁能够一步登天,所以脚踏实地才是成功的秘诀。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/06/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 详解
  • 额外科普-创建索引的方式
  • 写在最后
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档