MySQL索引的数据结构

文章详细介绍了为什么使用索引以减少磁盘I/O并提升查询速度,重点讲解了B+Tree这种数据结构在索引中的应用,解释了B+Tree如何通过多层节点组织大量记录,以及如何利用二分法在页面内快速定位记录,强调了索引对于数据库查询效率的重要性。
摘要由CSDN通过智能技术生成
讲师:尚硅谷 - 宋红康(江湖人称:康师傅)
官网: http://www.atguigu.com

1. 为什么使用索引

索引是数据结构

目的是为了减少磁盘I/O的次数,加快查询速率


2. 索引及其优缺点

2.1 索引概述

MySQL 官方对索引的定义为: 索引( Index )是帮助 MySQL 高效获取数据的数据结构
索引的本质: 索引是数据结构。你可以简单理解为 排好序的快速查找数据结构 ,满足特定查找算法。
这些数据结构以某种方式指向数据, 这样就可以在这些数据结构的基础上实现 高级查找算法
索引是在存储引擎中实现的,因此每种存储引擎的索引不一定相同

3.1 B+Tree

B+Tree
一个 B+ 树的节点其实可以分成好多层,规定最下边的那层,也就是存放我们用户记录的那层为第 0 层,
之后依次往上加。之前我们做了一个非常极端的假设:存放用户记录的页 最多存放 3 条记录 ,存放目录项记录的页 最多存放 4 条记录 。其实真实环境中一个页存放的记录数量是非常大的,假设所有存放用户记录的叶子节点代表的数据页可以存放 100 条用户记录 ,所有存放目录项记录的内节点代表的数据页可以存放 1000 条目录项记录 ,那么:
如果 B+ 树只有 1 层,也就是只有 1 个用于存放用户记录的节点,最多能存放 100 条记录。 如果 B+ 树有 2 层,最多能存放 1000×100=10,0000 条记录。
如果 B+ 树有 3 层,最多能存放 1000×1000×100=1,0000,0000 条记录。
如果 B+ 树有 4 层,最多能存放 1000×1000×1000×100=1000,0000,0000 条记录。相当多的记
录!!!
你的表里能存放 100000000000 条记录吗?所以一般情况下,我们 用到的 B+ 树都不会超过 4 ,那我们
通过主键值去查找某条记录最多只需要做 4 个页面内的查找(查找 3 个目录项页和一个用户记录页),又因为在每个页面内有所谓的 Page Directory (页目录),所以在页面内也可以通过 二分法 实现快速定位记录。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值