一. 回顾

前面学习了Day2——存储引擎、sql预热,今天来学习一下索引结构。

二. 索引简介

2.1 什么是索引

官方定义:索引(Index)是帮助MySQL高效获取数据的数据结构
索引的本质是数据结构。

一般来说索引本身也是非常大的,不可能全部存储在内存中,因此索引往往以索引文件的形式存储在磁盘上

2.2 优势

提高数据检索的效率,降低数据库的IO成本。通过索引列对数据进行排序,降低数据排序的成本,降低了cpu销毁。

2.3 劣势

==降低了更新表的速度。==因为更新表时,不仅要保存数据,还要保存索引文件每次更新添加了索引列的字段。索引也是要占空间的。

三. BTree索引

BTree索引是如下这样子的:
Day3——索引结构
它存储了如下三个信息:

  1. 数据节点。一个大的方块,包含蓝色和黄色的大方块
  2. 向下的指针。图中黄色的方块,指向下一个节点
  3. 指向数据指针。图中的红色小方块

四. B+Tree索引

B+Tree的结构如下:
Day3——索引结构

五. MySQL索引结构

MySQL选择B+Tree结构,因为内存有限;如果内存无限,选择BTree。

六. 聚簇索引与非聚簇索引

Day3——索引结构
主键也是索引,它是主键索引,属于聚簇索引。

相关文章: