SQL Server筛选索引WHERE列=列

时间:2015-07-23 15:00:58

标签: sql-server sql-server-2012 filtered-index

我希望尝试在SQL Server 2012中的表上使用过滤索引来查看它是否会改善查询执行,但在尝试创建它时我收到以下错误:

  

Msg 10735,Level 15,State 1,Line 3
  筛选索引的错误WHERE子句' IX_SRReferralIn_Filtered'在桌子上' dbo.SRReferralIn'。

以下是我正在使用的声明。 RowIdentifierIDOrganisationVisibleToCLUSTERED PRIMARY KEY

中的列
CREATE NONCLUSTERED INDEX IX_SRReferralIn_Filtered
ON dbo.SRReferralIn(RowIdentifier, IDOrganisationVisibleTo)
WHERE IDOrganisationVisibleTo = IDOrganisation;

不支持WHERE子句中的表达式吗?

1 个答案:

答案 0 :(得分:4)

this is not supported

语法只允许与常量进行比较

<filter_predicate> ::= 
    <conjunct> [ AND <conjunct> ]

<conjunct> ::=
    <disjunct> | <comparison>

<disjunct> ::=column_name IN (constant ,...n)

<comparison> ::=column_name <comparison_op> constant<comparison_op> ::=
    { IS | IS NOT | = | <> | != | > | >= | !> | < | <= | !< }

您可以使用此条件创建索引视图。