SR0005: Vermeiden Sie in LIKE-Prädikaten die Verwendung von Mustern, die mit "%" beginnen

Regel-ID

SR0005

Kategorie

Microsoft.Performance

Unterbrechende Änderung

Nicht unterbrechend

Ursache

Das LIKE-Prädikat einer WHERE-Klausel beginnt mit dem Platzhalterzeichen ("%").

Regelbeschreibung

Sie können einen Tabellenscan verursachen, wenn Sie eine WHERE-Klausel verwenden, die ein LIKE-Prädikat wie z. B. "% Musterzeichenfolge" enthält, um nach Text zu suchen, der an einer beliebigen Stelle in der Spalte angezeigt wird.

Behandeln von Verstößen

Um dieses Problem zu beheben, ändern Sie die Suchzeichenfolge, damit sie mit einem Zeichen beginnt, das kein Platzhalter (%) ist, oder erstellen Sie einen Volltextindex.

Wann sollten Warnungen unterdrückt werden?

Sie können diese Warnung unterdrücken, wenn Sie die Anweisung, durch die die Warnung verursacht wird, selten verwenden, oder wenn die Tabelle immer nur einige Zeilen enthält.

Beispiel

Im ersten Beispiel verursacht die SELECT-Anweisung einen Tabellenscan, da die Suchzeichenfolge mit einem Platzhalterzeichen beginnt. Im zweiten Beispiel verursacht die Anweisung eine Indexsuche, da die Suchzeichenfolge nicht mit einem Platzhalterzeichen beginnt. Eine Indexsuche ruft nur die Zeilen ab, die mit der WHERE-Klausel übereinstimmen.

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%' 

Siehe auch

Konzepte

Analysieren von Datenbankcode zum Verbessern der Codequalität