一. 回顾
前面学习了Day2——存储引擎、sql预热,今天来学习一下索引结构。
二. 索引简介
2.1 什么是索引
官方定义:索引(Index)是帮助MySQL高效获取数据的数据结构
索引的本质是数据结构。
一般来说索引本身也是非常大的,不可能全部存储在内存中,因此索引往往以索引文件的形式存储在磁盘上
2.2 优势
提高数据检索的效率,降低数据库的IO成本。通过索引列对数据进行排序,降低数据排序的成本,降低了cpu销毁。
2.3 劣势
==降低了更新表的速度。==因为更新表时,不仅要保存数据,还要保存索引文件每次更新添加了索引列的字段。索引也是要占空间的。
三. BTree索引
BTree索引是如下这样子的:
它存储了如下三个信息:
- 数据节点。一个大的方块,包含蓝色和黄色的大方块
- 向下的指针。图中黄色的方块,指向下一个节点
- 指向数据指针。图中的红色小方块
四. B+Tree索引
B+Tree的结构如下:
五. MySQL索引结构
MySQL选择B+Tree结构,因为内存有限;如果内存无限,选择BTree。
六. 聚簇索引与非聚簇索引
主键也是索引,它是主键索引,属于聚簇索引。