SQL 索引、聚集索引、非聚集索引 资料整理

 资料来源

http://www.cnblogs.com/careyson/archive/2011/12/22/2297568.html

http://www.cnblogs.com/aspnethot/articles/1504082.html

索引

索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。

聚集

为了提高某个属性(或属性组)的查询速度,把这个或这些属性(称为聚集码)上具有相同值的元组集中存放在连续的物理块

称为聚集。

在SQL SERVER中,聚集的作用就是将某一列(或是多列)的物理顺序改变为和逻辑顺序相一致。

聚集索引

SQL 索引、聚集索引、非聚集索引 资料整理

 因为聚集索引改变的是其所在表的物理存储顺序,所以每个表只能有一个聚集索引。

非聚集索引 

本质上来说也是聚集索引的一种.非聚集索引并不改变其所在表的物理结构,而是额外生成一个聚集索引的B树结构,但叶子节点是对于其所在表的引用,这个引用分为两种,如果其所在表上没有聚集索引,则引用行号。如果其所在表上已经有了聚集索引,则引用聚集索引的页。

SQL 索引、聚集索引、非聚集索引 资料整理

非聚集索引需要额外的空间进行存储,按照被索引列进行聚集索引,并在B树的叶子节点包含指向非聚集索引所在表的指针。

如果其所在表的物理结构改变后,比如加上或是删除聚集索引,那么所有非聚集索引都需要被重建,这个对于性能的损耗是相当大的。所以最好要先建立聚集索引,再建立对应的非聚集索引。

何时使用聚集索引或非聚集索引

 

动作描述 使用聚集索引 使用非聚集索引
列经常被分组排序
返回某范围内的数据 不应
一个或极少不同值 不应 不应
小数目的不同值 不应
大数目的不同值 不应
频繁更新的列 不应
外键列
主键列
频繁修改索引列 不应



    

资料来源

http://www.cnblogs.com/careyson/archive/2011/12/22/2297568.html

http://www.cnblogs.com/aspnethot/articles/1504082.html

转载于:https://www.cnblogs.com/IT-Bear/archive/2012/11/07/2758180.html