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
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接