如何使用 FILESTREAM ROWGUID 在表上设置索引?

fob*_*obo 7 sql-server-2008 sql-server

我对带有 FILESTREAM 的表上的 ROWGUID 列的要求感到困惑。这个专栏将如何使用?

如果我在同一个表上使用不同的主键(聚集),同时让该 ROWGUID 列“就在那里”而没有聚集索引,是否可以?

像这样:

CREATE TABLE Sample
{
    -- This is going to be clustered
    [Id] int NOT NULL,

    -- What shall I do with it index-wise?
    [RowGuid] uniqueidentifier ROWGUIDCOL NOT NULL UNIQUE
}
Run Code Online (Sandbox Code Playgroud)

fob*_*obo 3

更新:我发现了一些潜在的相关内容: http://msdn.microsoft.com/en-us/library/cc949109%28d=printer%29.aspx

他们有一个类似的例子:

CREATE TABLE DocumentStore (
       DocumentID INT IDENTITY PRIMARY KEY,
       Document VARBINARY (MAX) FILESTREAM NULL,
       DocGUID UNIQUEIDENTIFIER NOT NULL ROWGUIDCOL
              UNIQUE DEFAULT NEWID () ON Data_FG1)
ON DocPartScheme (DocumentID)
FILESTREAM_ON DocFSPartScheme;
GO
Run Code Online (Sandbox Code Playgroud)

附注:

请注意,要使用 DocumentID 列作为分区列,必须将对DocGUID 强制执行 UNIQUE 约束的基础非聚集索引显式放置在文件组上,以便 DocumentID 列可以作为分区列。这意味着只有在执行分区切换之前禁用 UNIQUE 约束(因为它们是未对齐索引),然后再重新启用分区切换,才可能进行分区切换。

我想我会让 ROWGUID 保持原样,一个唯一的非聚集索引。