sys.dm_db_missing_index_columns (Transact-SQL)

Gibt Informationen zu Spalten von Datenbanktabellen zurück, für die kein Index vorhanden ist, mit Ausnahme von räumlichen Indizes. Bei sys.dm_db_missing_index_columns handelt es sich um eine dynamische Verwaltungsfunktion.

Syntax

sys.dm_db_missing_index_columns(index_handle)

Argumente

Zurückgegebene Tabelle

Spaltenname

Datentyp

Beschreibung

column_id

int

ID der Spalte.

column_name

sysname

Name der Tabellenspalte.

column_usage

varchar(20)

Art der Verwendung der Spalte durch die Abfrage. Folgende Werte sind möglich:

WertBeschreibung
EQUALITYDie Spalte wird in ein Prädikat einbezogen, das Gleichheit ausdrückt und folgendes Format aufweist: table.column =constant_value
INEQUALITYDie Spalte wird in ein Prädikat einbezogen, das Ungleichheit ausdrückt, z. B. ein Prädikat in folgendem Format: table.column > constant_value Jeder Vergleichsoperator außer "=" drückt Ungleichheit aus. Die vollständige Liste der Vergleichsoperatoren finden Sie unter Vergleichsoperatoren (Datenbankmodul).
INCLUDEDie Spalte wird nicht zur Auswertung eines Prädikats, sondern aus einem anderen Grund verwendet, z. B. zum Abdecken einer Abfrage.

Hinweise

Von sys.dm_db_missing_index_columns zurückgegebene Informationen werden aktualisiert, wenn eine Abfrage vom Abfrageoptimierer optimiert wird. Sie werden nicht beibehalten. Informationen zu fehlenden Indizes werden nur bis zum Neustart von SQL Server aufbewahrt. Datenbankadministratoren sollten in regelmäßigen Abständen Sicherungskopien der Informationen zu fehlenden Indizes erstellen, wenn sie sie nach der Serverwiederverwendung aufbewahren möchten.

Weitere Informationen zum Aktivieren und Deaktivieren der Sammlung von Informationen zu fehlenden Indizes finden Sie unter Informationen zur Funktion für fehlende Indizes.

Die Ausgabe der dynamischen Verwaltungsfunktion sys.dm_db_missing_index_columns kann von jedem Tool verwendet werden, das die einem index_handle-Wert entsprechenden Informationen zu fehlenden Indizes lesen, verarbeiten und in CREATE INDEX DDL-Anweisungen konvertieren kann, die den fehlenden Index implementieren. Weitere Informationen zum Erstellen von DDL-Anweisungen finden Sie unter Verwenden von fehlenden Indexinformationen zum Schreiben von CREATE INDEX-Anweisungen.

Weitere Informationen zu Einschränkungen dieser Funktion finden Sie unter Einschränkungen der Funktion für fehlende Indizes.

Transaktionskonsistenz

Wenn eine Transaktion eine Tabelle erstellt oder löscht, werden die Zeilen, die Informationen zu fehlenden Indizes der gelöschten Objekte enthalten, aus diesem dynamischen Verwaltungsobjekt entfernt. Hierdurch bleibt die Transaktionskonsistenz erhalten. Weitere Informationen zur Transaktionskonsistenz in Bezug auf die dynamischen Verwaltungsobjekte für fehlende Indizes finden Sie unter Informationen zur Funktion für fehlende Indizes.

Berechtigungen

Benutzern muss die VIEW SERVER STATE-Berechtigung oder eine Berechtigung, die die VIEW SERVER STATE-Berechtigung impliziert, erteilt werden, damit sie diese dynamische Verwaltungsfunktion abfragen können.

Beispiele

Im folgenden Beispiel wird eine Abfrage für die Address-Tabelle und anschließend eine Abfrage mithilfe der dynamischen Verwaltungssicht sys.dm_db_missing_index_columns ausgeführt, um die Tabellenspalten zurückzugeben, die keinen Index aufweisen.

USE AdventureWorks2008R2;
GO
SELECT City, StateProvinceID, PostalCode
FROM Person.Address
WHERE StateProvinceID = 9;
GO
SELECT mig.*, statement AS table_name,
    column_id, column_name, column_usage
FROM sys.dm_db_missing_index_details AS mid
CROSS APPLY sys.dm_db_missing_index_columns (mid.index_handle)
INNER JOIN sys.dm_db_missing_index_groups AS mig ON mig.index_handle = mid.index_handle
ORDER BY mig.index_group_handle, mig.index_handle, column_id;
GO