一、概念
聚簇索引:在主索引的文件上直接存放该行数据的索引储存结构称为聚簇索引,次索引指向对主索引的引用。(innodb)
非聚簇索引:主索引和次索引都指向物理行(磁盘位置).
二、INNODB和MYISAM的主键索引与二级(次)索引的对比:
总结:InnoDB的主索引的节点与数据放在一起,次索引的节点存放的是主键的位置。myisam的主索引和次索引都指向该数据在磁盘的位置。
注意: innodb来说,
1: 主键索引 既存储索引值,又在叶子中存储行的数据
2: 如果没有主键, 则会Unique key做主键
3: 如果没有unique,则系统生成一个内部的rowid做主键.
4: 像innodb中,主键的索引结构中,既存储了主键值,又存储了行数据,这种结构称为”聚簇索引”
三、聚簇索引 优劣势
优势: 根据主键查询条目比较少时,不用回行(数据就在主键节点下)
劣势: 如果碰到不规则数据插入时,造成频繁的页分裂.
四、聚簇索引的页分裂
高性能索引策略:
对于innodb而言,因为节点下有数据文件,因此节点的分裂将会比较慢.
对于innodb的主键,尽量用整型,而且是递增的整型.
如果是无规律的数据,将会产生的页的分裂,影响速度.
额外知识点:
索引覆盖:指如果查询的列恰好是索引的一部分,那么查询只需要在索引文件上进行,不需要回行到磁盘再找数据,称为”索引覆盖”。
特点:查询速度非常快,