区别
- 密集索引文件中的每个搜索码值都对应一个索引值
- 稀疏索引文件只为索引码的某些值建立索引项
- 密集索引:叶子节点保存的不只是键值,还保存了位于同一行记录里的其他列的信息,由于密集索引决定了表的物理排列顺序,一个表只有一个物理排列顺序,所以一个表只能创建一个密集索引
- 稀疏索引:叶子节点仅保存了键位信息以及该行数据的地址,有的稀疏索引只保存了键位信息机器主键
- mysam存储引擎,不管是主键索引,唯一键索引还是普通索引都是稀疏索引
- innodb存储引擎:有且只有一个密集索引。密集索引的选取规则如下:
主索引:
将主文件分块,每一块对应一个索引项。每个存储快的第一条记录,又称为锚记录。
主索引是按照索引字段值进行排序的一个有序文件,通常建立在有序文件的基于主码的排序字段上。
主索引是稀疏索引。
辅助索引:
定义:定义在主文件的任意一个或者多个非排序字段上的辅助存储结构。
辅助索引通常对字段(该字段非排序)的每一个不同值有一个索引项。
字段值不唯一,引入中间桶保存指针列表。
辅助索引是稠密索引。
二者差别
- 一个主文件仅有一个主索引,但可以有多个辅助索引;
- 主索引通常建立在主码/排序码上面;
- 可以利用主索引重新组织主文件数据,辅助索引不可以。