Freigeben über


sys.dm_db_missing_index_columns (Transact-SQL)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance

Gibt Informationen zu Datenbanktabellenspalten zurück, bei denen ein Index fehlt. sys.dm_db_missing_index_columns ist eine dynamische Verwaltungsfunktion.

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:

sys.dm_db_missing_index_details (Transact-SQL)

sys.dm_db_missing_index_groups (Transact-SQL)

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. Mögliche Werte und beschreibungen sind:

GLEICHHEIT: Spalte trägt zu einem Prädikat bei, das die Gleichheit des Formulars ausdrückt:
table.column = constant_value

UNGLEICHHEIT: Spalte trägt zu einem Prädikat bei, das Ungleichheit ausdrückt, z. B. ein Prädikat des Formulars: table.column>constant_value. Jeder Vergleichsoperator außer "=" drückt Ungleichheit aus.

INCLUDE: Die Spalte wird nicht verwendet, um ein Prädikat auszuwerten, sondern wird aus einem anderen Grund verwendet, z. B. um eine Abfrage abzudecken.

Hinweise

Die von sys.dm_db_missing_index_columns der Abfrage zurückgegebenen Informationen werden aktualisiert, wenn eine Abfrage vom Abfrageoptimierer optimiert und nicht beibehalten wird. Fehlende Indexinformationen werden nur aufbewahrt, bis das Datenbankmodul neu gestartet wird. Datenbankadministratoren sollten regelmäßig Sicherungskopien der Informationen zu fehlenden Indizes erstellen, wenn Sie sie nach dem Wiederverwenden des Servers beibehalten möchten. Verwenden Sie die sqlserver_start_time-Spalte in sys.dm_os_sys_info, um die aktuellste Startzeit der Datenbank-Engine zu suchen.

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.

Berechtigungen für SQL Server 2022 und höher

Erfordert die VIEW SERVER PERFORMANCE STATE-Berechtigung auf dem Server.

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 AdventureWorks2022;  
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  

Fehlende Indexvorschläge sollten nach Möglichkeit miteinander und mit vorhandenen Indizes in der aktuellen Datenbank kombiniert werden. Erfahren Sie, wie Sie diese Vorschläge in nicht gruppierten Indizes mit fehlenden Indexvorschlägen anwenden.

Nächste Schritte

Weitere Informationen zum fehlenden Indexfeature finden Sie in den folgenden Artikeln: