B+树:MySql数据库索引是如何实现的
索引:是帮助MySQL高效获取数据的数据结构。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需要的内容。
数据量很大,几十万几百万,用二叉树,二分查找(每个节点最多拥有两个子节点)不太可能。
局部性原理:当一个数据被用到的时候,它附近的数据也会马上被用到,所以磁盘在读取数据的时候会把其附近的数据也一并读取。
B树,一个节点可以有多个节点
B树会被设为 4kb大小(一页大小)。子节点存储的个数在 100 - 1000之间
关键字对应的数据是记录在硬盘上存储的位置
B+树
- 非叶节点只存放搜索关键字
- 叶子节点会链接起来,形成所谓的链表(方便查找)
- 索引能力更强,搜索关键字更多
MYISAM :
- 主索引 Key唯一, 辅助索引 key可以重复,没有什么区别,地位平等
- data 记录的是数据存放的地址,到硬盘上读取数据
- 有单独的索引文件
- 非具体索引
InnoDB:
- 没有索引文件
- 叶子节点保存完整的数据记录
- 具体索引(必须有主键)
- 用主键进行索引,非常高效
- 辅助索引要先定位到主键,在通过主键索引得到data域