聚簇索引
聚簇索引不是一种索引类型,而是一种数据存储方式
innoDB的聚簇索引是在一个文件中保存了B+树的索引和数据行
当表有聚簇索引的时候,它的行数据是存放在索引的叶子中
innodb中,在聚簇索引之上创建的索引称之为辅助索引,辅助索引访问数据总是需要二次查找,非聚簇索引都是辅助索引,像复合索引、前缀索引、唯一索引,辅助索引叶子节点存储的不再是行的物理位置,而是主键值
- 一个表只能有一个聚簇索引(因为数据只能存在一个地方)
优点
- 可以把数据保存在一起,查询更快
- 覆盖索引扫描可以直接使用叶子节点中的主键
缺点
- 更新聚簇索引代价高,每个被更新的行会移动到新位置
- 插入新行或者主键导致行移动,可能会导致页分裂,表占用更多磁盘空间
- 行稀疏或者页分裂导致数据存储不连续,全表扫描可能很慢
- 对io密集型应用很友好,但是如果数据都在内存中就没优势了