聚簇索引和非聚簇索引

来源:互联网 发布:奥拉星淘宝怎么买号 编辑:程序博客网 时间:2024/06/15 08:07

聚集索引是根据数据行的键值排序在表中存储数据行。每个表只能有一个聚集索引。只有当表使用聚集索引时,表中的数据行才需按排序顺序存储。如果表具有聚集索引,则该表称为聚集表。聚集索引决定了表数据的存储顺序,如果表没有聚集索引,则其数据行存储在一个称为堆的无序结构中。
非聚集索引并不是在物理上按索引键值排列存储数据,即索引中的逻辑顺序并不等同于表中行的物理顺序,索引是指向表中行的位置的指针,这些指针本身是有序的,通过这些指针可以在表中快速定位数据


聚集索引和非聚集索引的根本区别是数据记录的排列顺序和索引的排列顺序是否一致,聚集索引表记录的排列顺序与索引的排列顺序一致,优点是查询速度快,因为一旦具有第一个索引值的纪录被找到,具有连续索引值的记录也一定物理的紧跟其后,从而缩小了搜索范围,对于返回某一范围的数据效果最好。聚集索引的缺点是对表进行修改速度较慢,这是为了保持表中的记录的物理顺序与索引的顺序一致,而把记录插入到数据页的相应位置,必须在数据页中进行数据重排,降低了执行速度。
  非聚集索引指定了表中记录的逻辑顺序,数据记录的物理顺序和索引的顺序不一致,聚集索引和非聚集索引都采用了B树的结构。非聚集索引添加记录不会引起数据顺序的重组。在有大量不同数据的列上建立非聚集索引,可以提高数据的查询和修改速度。

例如:
计算机系的500名学生分布在500个不同的物理块上时,利用非聚簇索引至少要执行500次I/O操作。
如果将同一系的学生元组集中存放,则每读一个物理块可得到多个满足查询条件的元组,从而显著地减少了访问磁盘的次数。

0 0
原创粉丝点击