WEB开发网
开发学院数据库MSSQL Server SQL Server 索引基础知识(6)----索引的代价,... 阅读

SQL Server 索引基础知识(6)----索引的代价,使用场景

 2008-02-19 09:53:15 来源:WEB开发网   
核心提示: 聚集索引唯一性(独特型的问题)由于聚集索引的B+树结构的叶子节点必须指向具体数据,如果你要建立聚集索引的列不唯一,SQL Server 索引基础知识(6)----索引的代价,使用场景(2),并且你指定的创建的聚集索引是非唯一的聚集索引,则会有以下情况:如果未使用 UNIQUE 属性创建聚集

聚集索引唯一性(独特型的问题)

由于聚集索引的B+树结构的叶子节点必须指向具体数据。如果你要建立聚集索引的列不唯一,并且你指定的创建的聚集索引是非唯一的聚集索引,则会有以下情况:

如果未使用 UNIQUE 属性创建聚集索引,数据库引擎 将向表自动添加一个四字节 uniqueifier 列。必要时,数据库引擎 将向行自动添加一个 uniqueifier 值,使每个键唯一。此列和列值供内部使用,用户不能查看或访问。

参看我的这篇博客:

SQL Server 索引基础知识(4)----主键与聚集索引

http://tech.ddvip.com/2008-02/120340635941893.html

聚集索引持续向上增长的需求

具体来说下面两个问题要求建立聚集索引的列最好是持续向上增长的

1、缓存的命中率问题。(需要从B+树的结构分析)

2、连续和不连续的磁盘 I/O 操作对性能的影响 。

细节参看我的这篇博客:

SQL Server 索引基础知识(5)----理解newid()和newsequentialid()

http://tech.ddvip.com/2008-02/120340674641896.html

至于,如果你的数据已经存在重复了,而且是不应该出现的,则可以参看下面这篇KB :

如何删除 SQL Server 表中的重复行

http://support.microsoft.com/kb/139444/zh-cn

非聚集索引提高性能的方法

非聚集索引由于B+树的节点不是具体数据页,有时候由于这个原因,会导致非聚集索引甚至不如表遍历来的快,参看我在下面这篇博客中给的例子

http://blog.joycode.com/ghj/archive/2008/01/02/113291.aspx

Tags:SQL Server 索引

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接