聚簇索引是根据每个表中的主键构成的一颗B+树,聚簇索引不是一个索引类型,而是一种数据结构,其叶子节点存放的是整张表的行记录数,因此,聚簇索引中满足索引即数据,数据即索引。聚簇索引满足一下几个条件:
1.索引中叶子节点用于存放每条记录数据的页中是以主键的大小顺序排列而成的单项链表构成的
2.索引中用于记录数据的页之间是以主键大小顺序排列而成的双向链表构成的
3.索引中用于记录目录项的页之间是以主键大小顺序排列而成的双向链表构成的
4.索引中的叶子节点存储了整张表的行记录数,包括了显示存储的列和隐藏的数据
因此,创建表的时候就创建了索引,不需要我们显示的用index创建索引
优点:
1.数据访问较快,索引和记录数据存放在同一个B+树中
2.进行排序查找的时候和范围查找的时候速度是非常快的
3.由于聚簇索引是根据主键的大小顺序排序的,在范围查找中不需要从多个页中分散提取数据,减少了在磁盘上的io操作,提高了运行效率
缺点:
1.插入速度严重依赖于插入的顺序,按照主键ID递增的顺序插入速度最快,否则会导致页分裂的情况(当你在B+树中插入记录数据的时候,在该记录数据之后的记录数据都会进行数据位置的移动),严重影响性能,因此我们需要设置一个自增的ID列为主键
2.更新ID的时候需要对记录数据进行移动操作,代价非常大
3.二级索引的时候需要进行两次查找操作,第一次查找到二级索引叶子节点对应的主键,然后根据主键对聚簇索引再次查找,才能找到对应的记录数据
个人学习总结,错误之处请指正!!!