三、聚簇索引和非聚簇索引
2018-08-07 本文已影响5人
_sleeping
聚餐索引:数据存放在索引叶子节点下
非聚餐索引:索引和数据不是放在一起
myisam (使用非聚餐索引,索引和数据不是放在一起)
1.索引和数据分别为单独的文件,数据文件在磁盘上,每行都有自己的地址
2.主索引和次索引都指向行在磁盘的位置
3.先从索引树找到数据的所在的位置,然后再到数据上取
如下图所示

innodb
1.innodb的主索引文件上,直接存放了该行的数据,次索引指向对主键的引用
注意:
主键索引既存储索引值,又在叶子中存储行的数据
如果没有主键,则会用unique key做主键
若果没有unique则系统生成内部的rowid做主键
像innodb中,主键的索引结构中,既存储了主键值,又存储了行数据,这种结构称为“聚簇索引”

聚簇索引
优势:根据主键查询条目比较少时,不用回行(数据就在主键节点下)
劣势:如果碰到不规则数据插入,造成频繁页分裂,索引树是有规律的,当插入的主键数据不规则时,索引树需要重新排列。