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:
- Optimieren nicht gruppierter Indizes mit Vorschlägen für fehlende Indizes
- sys.dm_db_missing_index_details (Transact-SQL)
- sys.dm_db_missing_index_groups (Transact-SQL)
- sys.dm_db_missing_index_group_stats (Transact-SQL)
- sys.dm_db_missing_index_group_stats_query (Transact-SQL)
- sys.dm_os_sys_info (Transact-SQL)