理解
- 不是一种单独的索引类型,而是一种数据存储方式。
- 叶子结点直接包含为卫星数据,而不是指向卫星数据的指针。
特点
- 存储数据的顺序和索引顺序一致。
- 一个表只能有一个聚簇索引,因为表的数据是存储在聚簇索引树的叶子结点上,而表只需存储一次。
优点
- 可以把相关数据保存在一起,减少磁盘IO。(如果没有使用聚簇索引,则可能导致多次的磁盘IO)
- 数据访问更快。因为索引和数据保存在一块,所以从聚簇索引中获取数据比在非聚簇索引中查找要快,不用再通过指针定位到数据。(叶子结点直接包含卫星数据,而不是指向卫星数据的指针。)
- 使用覆盖索引扫描的查询可以直接使用叶子结点中的主键值。
缺点
- 聚簇索引提高IO密集型应用的性能,但是如果数据放在内存中时,则不需要磁盘IO,—>聚簇索引就失去了作用。
- 插入新行或者主键被更新时可能需要移动行(插入顺序不按照主键的顺序)---->导致页分裂----->页分裂会导致表占用更多的磁盘空间。
- 插入速度严重依赖插入顺序。
- 可能导致全表扫描变慢。
- 二级索引的叶子结点包含了引用行的聚簇索引,二级索引可能会占用更多的内存空间。
- 二级索引访问需要两次查找。(二级索引保存的是行的一级索引值,而不是指向行的指针。)