在SQL Server 2005表上创建非聚簇索引是否会阻止选择?

Abe*_*ler 10 sql-server indexing locking

我想在我的视图上创建一个索引,但我需要确保在创建索引时仍然可以读取数据.我正在阅读一篇文章,建议在创建非聚簇索引时,如果指定ONLINE = ON选项,数据仍然可读(下面的示例):

CREATE UNIQUE CLUSTERED INDEX CLUST_IDX_SQLTIPS
ON SQLTips (tip) with (ONLINE=ON) 
Run Code Online (Sandbox Code Playgroud)

我理解正确吗?在创建索引之前,我在创建索引之前是否有任何潜在的问题需要注意?

Rem*_*anu 15

在线索引创建和重建仅在Enterprise Edition上可用.请参阅在线索引操作的工作原理执行在线索引操作的指南.

有一些限制,最值得注意的是:

  • 如果聚簇索引包含任何BLOB字段(image,ntext,text,varchar(max),nvarchar(max),varbinary(max)和xml),则必须脱机创建/重建它们.
  • 必须脱机创建视图上的初始聚簇索引.

您必须确保您的数据库有足够的空间来执行联机索引操作,因为除了当前大小之外,它还需要大约1.5倍的表大小.在联机索引创建期间,表在数据库中存在两次,因此需要额外的空间.

由于您的案例属于排除类别(视图上的初始聚集索引),因此您无需担心在线索引.您必须使用脱机索引操作.

顺便说一下,您还必须知道,仅在Enterprise Edition中,优化程序才会考虑索引视图.在较低版本中,必须在视图中指定NOEXPAND子句以利用视图上的可能索引.