Sql 创建筛选索引

Sql 创建筛选索引,sql,sql-server-2008,Sql,Sql Server 2008,我想在(Column1=Column2)条件下创建筛选索引: CREATE NONCLUSTERED INDEX [IX_Document_IsBalanced] ON [ACC].[Document] ([DocumentID] ASC) WHERE SumCredit = SumDebit ON [PRIMARY] GO 错误消息是: 关键字“with”附近的语法不正确 过滤索引是SQL Server 2012的功能-以下是MSDN在语法上的 例如: CREATE NONCLUSTERED

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

CREATE NONCLUSTERED INDEX [IX_Document_IsBalanced]
ON [ACC].[Document] ([DocumentID] ASC)
WHERE SumCredit = SumDebit
ON [PRIMARY]
GO
错误消息是:

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


过滤索引是SQL Server 2012的功能-以下是MSDN在语法上的

例如:

CREATE NONCLUSTERED INDEX FIBillOfMaterialsWithEndDate
    ON Production.BillOfMaterials (ComponentID, StartDate)
    WHERE EndDate IS NOT NULL ;
GO

文档在这个问题上非常混乱,但是您不能真正创建一个在这种情况下过滤的索引(因为它不能用于过滤统计数据)

文件说:

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

没有明确定义“简单”,但事实上“简单”意味着“可被过滤的统计数据使用”。两者都有相同的局限性

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

column = const
column > const
column < const
column IN (const1, const1)
column=const
列>常量
列<常数
中的列(常数1,常数1)

以及它们的变体(
介于
等之间),可能与和(甚至不是或)结合使用。

请发布您正在发布的声明。另外:您可以在筛选的索引表达式中进行简单的检查,如
,其中Column1不为空
或类似的内容。但是,您无法比较两个列的值-您将在表“dbo.XXXXXXX”上的筛选索引“ix_test”得到一个错误
Msg 10735,级别15,状态1,第2行不正确的WHERE子句。
我的T-SQL命令是:在[ACC].[Document]([DocumentID]ASC)上创建非聚集索引[ix_Document_IsBalanced],其中[PRIMARY]上的SumCredit=SumDebit]GOQuassnoi的回答是正确的,但错误消息是抱怨
WITH
附近的语法。代码在哪里?尝试创建筛选索引时遇到的错误是表“Document”上筛选索引“IX_Document\u IsBalanced”的WHERE子句不正确。SQL Server 2008 my friend…-查看您自己的MSDN文档:我已成功使用!=在过滤索引上也是如此。