Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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