sys.dm_db_missing_index_columns (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

Gibt Informationen zu Datenbanktabellenspalten zurück, 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. Die möglichen Werte und ihre Beschreibungen sind:

GLEICHHEIT: Die Spalte trägt zu einem Prädikat bei, das gleichheitsformiert:
table.column = constant_value

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

INCLUDE: Die Spalte wird nicht zum Auswerten eines Prädikats verwendet, sondern aus einem anderen Grund verwendet, z. B. zum Abdecken einer Abfrage.

Bemerkungen

Von zurückgegebene sys.dm_db_missing_index_columns Informationen werden aktualisiert, wenn eine Abfrage vom Abfrageoptimierer optimiert und nicht beibehalten wird. Fehlende Indexinformationen werden nur so lange aufbewahrt, bis die Datenbank-Engine 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 anwenden, um nicht gruppierte Indizes mit fehlenden Indexvorschlägen zu optimieren.

Nächste Schritte

Weitere Informationen zum Feature fehlender Index finden Sie in den folgenden Artikeln: