MySQL数据库索引

本文详细探讨了数据库索引的概念,解释了为何B+树被选作数据库索引的首选结构,对比了其与B树、红黑树、二叉搜索树的优劣。文章还分析了hash索引和B+树索引在不同场景下的适用性,并介绍了InnoDB存储引擎的基本结构及索引类型,包括聚集索引和辅助索引的工作原理。

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

1、 什么是数据库索引

索引可以类比为字典的目录,帮助加快数据库查询速度

2、 为什么使用B+树作为数据库索引,而不选择B树,红黑树,二叉搜索树?
  • B+树是多路平衡查找树,并且所有数据都放在叶子节点,通过链表链接。

  • 与B树相比,B+树的查找时间稳定,由于数据存放在叶子节点,所以避免了中序遍历跨层寻找。

  • 与二叉搜索树相比,如果是有序集合,会退化成链表,二叉搜索树高度会随着数据量增大变大

3、 hash索引和B+树索引

对于单条查询来说,hash索引时间复杂度为O(1),但是对于多条数据查询,同时如果还需要排序,分组,比较的时候,树型结构的索引更加合适

4、数据库基本结构
  • InnoDB 存储引擎中,所有的数据都被逻辑地存放在表空间中,表空间(tablespace)是存储引擎中最高的存储逻辑单位,在表空间的下面又包括段(segment)、区(extent)、页(page),行(Row)

  • 每页默认大小为16k,每个 16KB 大小的页中可以存放 2-200 行的记录

  • 每次查询数据时,会按页加载数据到B树节点,磁盘读写并不是按需读取,而是按页预读,这就是磁盘预读,如果未来要读取的数据就在这一页中,可以避免未来的磁盘IO,提高效率。

5、数据库索引的类型

在Innodb中

  • 聚集索引
    聚集索引中存放一行的所有记录,所有正常表有且仅有一个聚集索引,一般就是主键,表行记录按照聚集索引顺序存放的

  • 辅助索引
    存放索引列以及存放一个用于查找对应列的“书签”,使用辅助索引查询对应主键,再通过聚集索引查询对应行记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值