【问题标题】:SQL Server Filtered Index WHERE Column = ColumnSQL Server 筛选索引 WHERE 列 = 列
【发布时间】:2015-07-23 15:00:57
【问题描述】:

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

消息 10735,第 15 级,状态 1,第 3 行
表 'dbo.SRReferralIn' 上过滤索引 'IX_SRReferralIn_Filtered' 的 WHERE 子句不正确。

以下是我正在使用的语句。 RowIdentifierIDOrganisationVisibleToCLUSTERED PRIMARY KEY 中的列

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

WHERE 子句中的表达式是否不受支持?

【问题讨论】:

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


    【解决方案1】:

    没有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 | = | <> | != | > | >= | !> | < | <= | !< }
    

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

    【讨论】:

      猜你喜欢
      • 2010-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-11
      • 2021-02-17
      • 2021-03-21
      • 2013-09-02
      相关资源
      最近更新 更多