1

我想在 (Column1 = Column2) 条件下创建过滤索引:

CREATE NONCLUSTERED INDEX [IX_Document_IsBalanced]
ON [ACC].[Document] ([DocumentID] ASC)
WHERE SumCredit = SumDebit
ON [PRIMARY]
GO

错误消息是:

关键字“with”附近的语法不正确

4

2 回答 2

7

文档在这个问题上相当混乱,但你不能真正创建一个在这个条件下过滤的索引(因为它不能用于过滤统计信息)。

文档说:

过滤谓词使用简单的比较逻辑

没有明确定义“简单”,但实际上“简单”意味着“可供过滤统计信息使用”。两者有相同的限制。

统计数据只能使用等式、范围和列表中的常量。这意味着您只能使用以下谓词:

column = const
column > const
column < const
column IN (const1, const1)

及其变体(BETWEEN等),可能与AND(甚至不是OR)结合。

于 2012-05-28T06:57:28.397 回答
-5

过滤索引是 SQL Server 2012 功能 - 这是MSDN 关于语法的文档

例如:

CREATE NONCLUSTERED INDEX FIBillOfMaterialsWithEndDate
    ON Production.BillOfMaterials (ComponentID, StartDate)
    WHERE EndDate IS NOT NULL ;
GO
于 2012-05-28T06:48:23.420 回答