SQL Server 2008 创建非聚集索引

可以对表或索引视图创建多个非聚集索引。通常,创建非聚集索引是为了提高聚集索引未包含的常用查询的性能。

 典型实现
可以通过下列方法实现非聚集索引:

PRIMARY KEY 和 UNIQUE 约束
在创建 PRIMARY KEY 约束时,如果不存在该表的聚集索引且未指定唯一非聚集索引,则将自动对一列或多列创建唯一聚集索引。主键列不允许空值。
在创建 UNIQUE 约束时,默认情况下将创建唯一非聚集索引,以便强制 UNIQUE 约束。如果不存在该表的聚集索引,则可以指定唯一聚集索引。有关详细信息,请参阅 PRIMARY KEY 约束和 UNIQUE 约束。

独立于约束的索引
默认情况下,如果未指定聚集,将创建非聚集索引。每个表可以创建的非聚集索引最多为 249 个,其中包括 PRIMARY KEY 或 UNIQUE 约束创建的任何索引,但不包括 XML 索引。

索引视图的非聚集索引
对视图创建唯一的聚集索引后,便可以创建非聚集索引。有关详细信息,请参阅创建索引视图。

 具有包含列的索引
当创建非聚集索引以包含某个查询时,可以在索引定义中包含非键列,以包含查询中未用作主搜索列的那些列。这样可以提高性能,因为查询优化器可以在索引中找到需要的所有列数据,而不用访问表或聚集索引。有关详细信息,请参阅具有包含列的索引。

 具有筛选谓词的索引
筛选索引是一种经过优化的非聚集索引,尤其适用于涵盖从定义完善的数据子集中选择数据的查询。筛选索引使用筛选谓词对表中的部分行进行索引。与全表索引相比,设计良好的筛选索引可以提高查询性能、减少索引维护开销并可降低索引存储开销。

有关详细信息,请参阅筛选索引设计准则。

 磁盘空间要求
有关非聚集索引的磁盘空间要求的信息,请参阅确定索引的磁盘空间要求。

 性能注意事项
尽管在索引中包含查询使用的所有列这一点很重要,但要避免添加不必要的列。添加太多的索引列(键列或非键列)可能会导致下列性能后果:

一页上容纳的索引行减少,导致磁盘 I/O 增加,而缓冲效率降低。

需要更多的磁盘空间来存储索引。

索引维护可能增加对基础表或索引视图执行修改、插入、更新、删除或合并等操作所需的时间。

您应确定查询性能的提高是否超过修改数据时对性能的影响,以及是否产生了额外的磁盘空间要求。有关评估查询性能的详细信息,请参阅查询优化。

当表数据具有定义完善的行子集的列(如稀疏列、大部分值为 NULL 的列、具有各种类别的值的列以及具有截然不同的值范围的列)时,可考虑使用筛选索引以提高性能。有关详细信息,请参阅筛选索引设计准则。

在创建表时创建 PRIMARY KEY 或 UNIQUE 约束

CREATE TABLE (Transact-SQL)

对现有表创建 PRIMARY KEY 或 UNIQUE 约束

ALTER TABLE (Transact-SQL)

创建索引

CREATE INDEX (Transact-SQL)

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16436858/viewspace-515890/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/16436858/viewspace-515890/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值