Symptômes

Considérez le scénario suivant :

  • Vous créez un index filtré avec l’expression de prédicat IS NULL d’une colonne dans Microsoft SQL Server.

  • Le champ de la colonne n’est pas inclus dans la structure de l’index. (En d’autres termes, le champ de la colonne n’est pas une clé ou inclus la colonne dans la définition d’index filtrés.)

Par exemple, vous créez la requête suivante :

CREATE UNIQUE CLUSTERED INDEX i_action_rn on dbo.filter_test (rn)  CREATE NONCLUSTERED INDEX i_action_filt_action_date_type ON dbo.filter_test (action_type) WHERE action_date IS NULL 


Notez que cette requête n’utilise pas l’index filtré suivant :

select count(*) from dbo.filter_test where action_date is null and action_type=1
Dans ce scénario, l’index filtré n’est pas utilisé. En revanche, l’index ordonné en clusters est utilisé.

Résolution

Pour résoudre ce problème, incluez la colonne qui est testée en tant que valeur NULL dans les colonnes retournées. Ou bien, ajouter cette colonne comme insérer des colonnes dans l’index.

CREATE NONCLUSTERED INDEX New_i_action_filt_action_date_type ON dbo.filter_test (action_type) include (action_date) WHERE action_date IS NULL

Plus d'informations

Consultez les sites Web de Microsoft Developer Network (MSDN) suivants :

Créer des index filtrés

Décrit les index ordonnés et non ordonnés en clusters

Besoin d’aide ?

Développez vos compétences
Découvrez des formations
Accédez aux nouvelles fonctionnalités en avant-première
Rejoindre Microsoft Insider

Ces informations vous ont-elles été utiles ?

Dans quelle mesure êtes-vous satisfait(e) de la qualité de la traduction ?
Qu’est-ce qui a affecté votre expérience ?

Nous vous remercions pour vos commentaires.

×