SR0005 : Évitez d'utiliser des modèles qui commencent par "%" dans les prédicats LIKE

Id de la règle

SR0005

Catégorie

Microsoft.Performance

Modification avec rupture

Modification sans rupture

Cause

Le prédicat LIKE d'une clause WHERE démarre avec le caractère générique, « % ».

Description de la règle

Vous pouvez provoquer une analyse de table si vous utilisez une clause WHERE contenant un prédicat LIKE tel que '%chaîne de modèle' pour rechercher du texte pouvant se trouver n'importe où dans une colonne.

Comment corriger les violations

Pour résoudre ce problème, vous devez modifier la chaîne recherchée afin qu'elle commence par un caractère qui n'est pas un caractère générique (%), ou vous devez créer un index de texte intégral.

Quand supprimer les avertissements

Vous pouvez supprimer cet avertissement si vous utilisez rarement l'instruction qui provoque cet avertissement ou si la table ne contient que quelques lignes.

Exemple

Dans le premier exemple, l'instruction SELECT provoquera une analyse de table parce que la chaîne de recherche démarre avec un caractère générique. Dans le deuxième exemple, l'instruction provoquera une recherche d'index parce que la chaîne de recherche ne démarre pas avec un caractère générique. Une recherche d'index extrait uniquement les lignes qui correspondent à la clause WHERE.

SELECT [dbo].[Table2].[ID], [dbo].[Table2].[c1], [dbo].[Table2].[c2], [dbo].[Table2].[c3], [dbo].[Table2].[Comment] 
FROM dbo.[Table2] 
WHERE Comment LIKE '%pples' 

SELECT [dbo].[Table2].[ID], [dbo].[Table2].[c1], [dbo].[Table2].[c2], [dbo].[Table2].[c3], [dbo].[Table2].[Comment] 
FROM dbo.[Table2] 
WHERE Comment LIKE 'A%' 

Voir aussi

Concepts

Analyse du code de base de données pour en améliorer la qualité