2015-07-23 1 views
1

J'espérais d'essayer d'utiliser un index filtré sur une table SQL Server 2012 pour voir si elle améliorerait l'exécution des requêtes que lorsque vous essayez de créer, je reçois l'erreur suivante:SQL Server Index Filtré WHERE colonne = colonne

Msg 10735, Level 15, State 1, Line 3
Incorrect WHERE clause for filtered index 'IX_SRReferralIn_Filtered' on table 'dbo.SRReferralIn'.

Voici la déclaration que j'utilise. RowIdentifier et IDOrganisationVisibleTo sont les colonnes du CLUSTERED PRIMARY KEY

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

est l'expression dans la clause WHERE non pris en charge?

Répondre

4

n ° this is not supported.

La grammaire ne permet que des comparaisons avec des constantes

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

Vous pouvez créer une vue indexée avec cette condition cependant.