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. sys.dm_db_missing_index_columns ist eine dynamische Verwaltungsfunktion.
Gilt für: SQL Server (SQL Server 2008 bis aktuelle Version), Windows Azure SQL-Datenbank (Ursprüngliche Version bis aktuelle Version). |
Syntax
sys.dm_db_missing_index_columns(index_handle)
Argumente
index_handle
Eine ganze Zahl, die einen fehlenden Index eindeutig identifiziert. Sie kann aus den folgenden dynamischen Verwaltungsobjekten abgerufen werden:
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:
|
Hinweise
Von sys.dm_db_missing_index_columns zurückgegebene Informationen werden aktualisiert, wenn eine Abfrage vom Abfrageoptimierer optimiert wird. Sie werden nicht persistent gespeichert. Informationen zu fehlenden Indizes werden nur bis zum Neustart von SQL Server aufbewahrt. Datenbankadministratoren sollten regelmäßig Sicherungskopien der Informationen zu fehlenden Indizes erstellen, wenn Sie sie nach dem Wiederverwenden des Servers beibehalten möchten.
Transaktionskonsistenz
Wenn durch eine Transaktion eine Tabelle erstellt oder gelöscht wird, werden die Zeilen mit Informationen zu fehlenden Indizes bezüglich der gelöschten Objekte aus diesem dynamischen Verwaltungsobjekt entfernt, damit die Transaktionskonsistenz erhalten bleibt.
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 AdventureWorks2012;
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
Siehe auch
Verweis
sys.dm_db_missing_index_details (Transact-SQL)