三、聚簇索引和非聚簇索引

聚餐索引:数据存放在索引叶子节点下

非聚餐索引:索引和数据不是放在一起

myisam (使用非聚餐索引,索引和数据不是放在一起)

    1.索引和数据分别为单独的文件,数据文件在磁盘上,每行都有自己的地址

    2.主索引和次索引都指向行在磁盘的位置

    3.先从索引树找到数据的所在的位置,然后再到数据上取

如下图所示


三、聚簇索引和非聚簇索引_第1张图片

innodb

1.innodb的主索引文件上,直接存放了该行的数据,次索引指向对主键的引用

注意:

    主键索引既存储索引值,又在叶子中存储行的数据

    如果没有主键,则会用unique key做主键

    若果没有unique则系统生成内部的rowid做主键

    像innodb中,主键的索引结构中,既存储了主键值,又存储了行数据,这种结构称为“聚簇索引”


三、聚簇索引和非聚簇索引_第2张图片

聚簇索引

优势:根据主键查询条目比较少时,不用回行(数据就在主键节点下)

劣势:如果碰到不规则数据插入,造成频繁页分裂,索引树是有规律的,当插入的主键数据不规则时,索引树需要重新排列。

你可能感兴趣的:(三、聚簇索引和非聚簇索引)