MySQL中InnoDB的索引数据结构及优缺点

本文介绍了数据库索引的作用,包括B+树和Hash索引的不同类型,以及它们的优点(如加快检索速度和唯一性保障)和缺点(如维护成本和SQL效率)。特别提到InnoDB引擎中的B+树底层数据结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

索引是用于快速查询和检索数据的数据库存储结构,保存数据库指定字段的数据位置,类似于图书目录的作用;按照存储方式分为B+树索引(对树查找,查找速度快,可用于分组和排序)和Hash索引(用于精确查找,无法进行范围查找和排序分组);按照使用的字段数量分为组合索引、单列索引;按照逻辑方式分为主键索引、辅助索引(唯一索引、普通索引、前缀索引、全文索引)

优点:加快数据的检索速度、减少数据库扫描行数;创建唯一索引,可以保证行数据的唯一性;

缺点:创建索引和维护索引需要很多时间,当对索引列的数据进行增删改时,其索引也会动态修改,降低了SQL执行效率;当数据量小的时候,全表扫描和走索引扫描区别很小;

引可选的数据结构:

  • 二叉树
  • 红黑树
  • hash
  • B-tree

InnoDB引擎中,索引的底层数据结构是B+树;

B+树特点:

  • 所有数据按照递增顺序排列,左小右大;
  • 数据存在叶子节点中;
  • 叶子节点包含所有节点元素值;
  • 每一个叶子节点都持有一个指向下一个的指针,形成有序列表;
  • 每一个父节点的值,都包含在子节点中,是子节点的最大或最小值;

B+树的查找操作:

首先在根节点进行二分查找,找到对应的叶子节点,再在叶子节点进行二分查找,找到Key对应的data;

区间查找时,由于叶子节点是有序链表,可以通过指针继续查找遍历相邻叶子节点;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乔布

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值