所有数据页组成个双向链表,每个数据页中的记录会按照主键值从小到大的顺序组成一个单向链表。
每个数据页会为里面的记录生成一个页目录,通过主键值查找记录的时候,先通过二分法定位所在的槽,在遍历槽作在的分组中的记录
一、无索引的情况
- 定位所在的页
- 在所在页内进行相关记录的查找
二、索引
1、一个简单的索引方案
2、InnoDB中的索引方案
重点!!!
(1)聚簇索引
(2)二级索引
(3)联合索引
3、InnoDB中的B+树索引的注意事项
(1)根页面万年不动窝
根节点自创建起便不会再移动
(2)内节点中目录项纪录的唯一性
(3)一个页面至少两条记录
4、MyISAM中的索引方案简介
InnoDB中索引即数据,也就是聚簇索引那棵B+树的叶子结点已经包含了所有的用户数据
5、MySQL中创建和删除索引语句
添加索引
ALTER TABLE 表名 ADD (INDEX | KEY) 索引名 (需要被索引的单个列或者多个列)
删除索引
ALTER TABLE 表名 DROP (INDEX | KEY) 索引名
三、总结
InnoDB存储引擎的索引是一棵B+树,完整的用户记录都存储在叶子节点,其他层的节点都属于内节点,内节点存储的是目录项纪录
- 聚簇索引:叶子结点存储所有列的值
- 二级索引:叶子节点存储索引值和主键值
MyISAM数据和索引分开存储