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 |
SR0004 |
Kategorie |
Microsoft.Performance |
Unterbrechende Änderung |
Nicht unterbrechend |
Ursache
Ein IN-Prädikat verweist auf eine Spalte, die keinen Index hat.
Regelbeschreibung
Sie verursachen einen Tabellenscan, wenn Sie eine WHERE-Klausel verwenden, die auf eine oder mehrere Spalten verweist, die nicht als Teil eines IN-Prädikats indiziert sind. Der Tabellenscan reduziert die Leistung.
Behandeln von Verstößen
Um dieses Problem zu beheben, müssen Sie eine der folgenden Änderungen vornehmen:
Ändern Sie das IN-Prädikat, um auf nur jene Spalten zu verweisen, die einen Index haben.
Fügen Sie einen Index jeder Spalte hinzu, auf die das IN-Prädikat verweist, und die noch keinen Index besitzt.
Wann sollten Warnungen unterdrückt werden?
Sie können diese Warnung unterdrücken, wenn die Tabelle immer nur einige Zeilen enthält.
Beispiel
In diesem Beispiel verweist eine einfache SELECT-Anweisung auf eine Spalte, [c1], die keinen Index besitzt. Durch die zweite Anweisung wird ein Index definiert, den Sie hinzufügen können, um diese Warnung aufzulösen.
CREATE PROCEDURE [dbo].[Procedure3WithWarnings]
AS
SELECT [Comment]
FROM [dbo].[Table2]
WHERE [c1] IN (1, 2, 3)
CREATE INDEX [IX_Table2_C1]
ON [dbo].[Table2] (c1);
Siehe auch
Konzepte
Analysieren von Datenbankcode zum Verbessern der Codequalität