SQLServer索引创建策略——引言(I)

SQLServer索引创建策略——引言(I)

--王成辉翻译整理,转贴请注明出自微软BI开拓者www.windbi.com
--原帖地址

SQLServer索引创建策略根据用户的需求而各有不同。每一个不同的索引创建策略都可能有不同的内存和磁盘空间要求。这些不同的策略将在以后几篇文章里介绍。


开始让我们看看SQLServer2005里有哪些可以创建的索引类型:


-在线索引 vs. 离线索引:
SQLServer2005里,你可以在线创建、重建或删除索引。ONLINE选项允许目前的用户在索引操作期间访问表或聚集索引的数据和任何相关的非聚集索引。例如,当聚集索引被一个用户重建时,该用户和其他用户都可以继续更新和查询数据。当你执行离线DDL操作时,如创建或重建一个聚集索引,这些操作在数据和相关的索引上拥有排它锁。这会一直禁止在数据上的查询和修改,直到索引操作结束为止。
例子:
Create index idx_t on t(c1, c2)
WITH (ONLINE = ON)

-        连续索引 vs. 并行索引:

在多处理器计算机上,索引语句可以使用多个处理器去执行扫描、排序和创建操作,就像其他查询语句一样。运行单个语句的处理器数量由以下几点决定:配置选项最大并行度(使用sp_configure设置)(缺省值0到所有可用的处理器);索引选项MAXDOP(在语句里设置,看下面的例子);目前的工作量和创建的是非分区索引;第一个健列的数据分布。最大并行度选项限制了在并行计划执行里使用的处理器数量——换句话说:它设置了最高上限,意味着不能超过这个数量只能低于这个数量。如果数据库引擎侦测到系统繁忙的话,索引操作的并行度在语句执行开始之前自动地减少。
例子:
Create index idx_t on t(c1, c2)
WITH (MAXDOP = 2)
--限制索引创建的处理器数量为2

      -创建索引时在用户数据库上存储中间排序的结果集 vs. tempdb数据库上存储(SORT_IN_TEMPDB:

当你创建或重建索引时,你可以选择一个用来存储在索引创建期间产生的中间排序结果集的数据库。可以是用户数据库(创建索引的数据库)或tempdb数据库。SORT_IN_TEMPDB索引选项用来进行相应的设置。当设置为ON时,排序结果存储在tempdb数据库中。当设置为OFF时,排序结果存在索引最终存储的文件组或分区架构上。
例子:
Create clustered Index idx_t on t(c1)
WITH (SORT_IN_TEMPDB = ON)

下一篇:SQLServer索引创建策略——引言(II)
最后编辑拓狼 最后编辑于 2007-05-25 13:45:58
虽有智慧,不如乘势;虽有鎡基,不如待时。
君子学以聚之,问以辨之,宽以居之,仁以行之。
独学而无友,则孤陋而寡闻。