Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: SQL Server 2019 (15.x) und höhere Versionen
von Azure SQL Database
Azure SQL Managed Instance
SQL sql database in Microsoft Fabric
Gibt Informationen zu Abfragen zurück, die einen fehlenden Index aus Gruppen fehlender Indizes benötigten, ohne räumliche Indizes. Für jede fehlende Indexgruppe können mehr als eine Abfrage zurückgegeben werden. Eine fehlende Indexgruppe könnte mehrere Abfragen haben, die denselben Index benötigten.
In Azure SQL Database können dynamische Verwaltungsansichten keine Informationen offenlegen, die die Datenbank-Containment beeinflussen oder Informationen über andere Datenbanken, auf die der Benutzer Zugriff hat. Um zu vermeiden, dass diese Informationen verfügbar gemacht werden, wird jede Zeile mit Daten, die zum verbundenen Mandanten gehören, herausgefiltert.
| Spaltenname | Datentyp | Beschreibung |
|---|---|---|
group_handle |
int | Identifiziert eine Gruppe fehlender Indizes. Dieser Bezeichner ist innerhalb des Servers eindeutig. Die anderen Spalten stellen Informationen zu allen Abfragen bereit, für die der Index in der Gruppe als fehlend betrachtet wird. Eine Indexgruppe enthält nur einen Index. Kann in index_group_handle eingebunden werden. |
query_hash |
binary(8) | Binärer Hashwert, der in der Abfrage berechnet wird und zum Identifizieren von Abfragen mit ähnlicher Logik verwendet wird. Sie können den Abfragehash verwenden, um die aggregierte Ressourcennutzung für Abfragen zu ermitteln, die sich nur durch Literalwerte unterscheiden. |
query_plan_hash |
binary(8) | Binärer Hashwert, der im Abfrageausführungsplan wird und zum Identifizieren ähnlicher Abfrageausführungspläne verwendet wird. Sie können diesen Abfrageplan-Hashwert verwenden, um die kumulierten Kosten für Abfragen mit ähnlichen Ausführungsplänen zu suchen. Immer 0x000 wenn eine nativ kompilierte gespeicherte Prozedur eine speicheroptimierte Tabelle abfragt. |
last_sql_handle |
varbinary(64) | Ein Token, das eindeutig die Batch- oder gespeicherte Prozedur der zuletzt kompilierten Anweisung identifiziert, die diesen Index benötigte. Dies last_sql_handle kann verwendet werden, um den SQL-Text der Abfrage abzurufen, indem die dynamische Verwaltungsfunktion sys.dm_exec_sql_text aufgerufen wird. |
last_statement_start_offset |
int | Gibt in Bytes beginnend mit 0 die Anfangsposition der Abfrage an, die die Zeile im Text des Batches oder beibehaltenen Objekts für die letzte kompilierte Anweisung beschreibt, die diesen Index in seinem SQL-Batch benötigt. |
last_statement_end_offset |
int | Gibt in Bytes, beginnend mit 0, die Endposition der Abfrage an, die die Zeile im Text ihres Batches oder gespeicherten Objekts beschreibt, für die letzte kompilierte Anweisung, die diesen Index im SQL-Batch benötigte. |
last_statement_sql_handle |
varbinary(64) | Ein Token, das eindeutig die Batch- oder gespeicherte Prozedur der zuletzt kompilierten Anweisung identifiziert, die diesen Index benötigte. Wird von Abfragespeicher verwendet. Im Gegensatz dazu last_sql_handlesys.query_store_query_text verweist die Abfragespeicher Katalogansicht auf die statement_sql_handle sys.query_store_query_text.Wird zurückgegeben 0 , wenn Query Store nicht aktiviert war, als die Abfrage kompiliert wurde. |
user_seeks |
bigint | Die Anzahl von durch Benutzerabfragen verursachten Suchvorgängen, für die der empfohlene Index in der Gruppe hätte verwendet werden können. |
user_scans |
bigint | Die Anzahl von durch Benutzerabfragen verursachten Scanvorgängen, für die der empfohlene Index in der Gruppe hätte verwendet werden können. |
last_user_seek |
datetime | Das Datum und die Uhrzeit des letzten durch Benutzerabfragen verursachten Suchvorgangs, für den der empfohlene Index in der Gruppe hätte verwendet werden können. |
last_user_scan |
datetime | Das Datum und die Uhrzeit des letzten durch Benutzerabfragen verursachten Scanvorgangs, für den der empfohlene Index in der Gruppe hätte verwendet werden können. |
avg_total_user_cost |
float | Die durchschnittlichen Kosten der Benutzerabfragen, die durch den Index in der Gruppe reduziert werden könnten. |
avg_user_impact |
float | Durchschnittlicher prozentualer Nutzen, der für Benutzerabfragen entstünde, wenn diese Gruppe fehlender Indizes implementiert würde. Der Wert bedeutet, dass die Abfragekosten durchschnittlich um diesen Prozentsatz verringert würden, wenn diese Gruppe fehlender Indizes implementiert würde. |
system_seeks |
bigint | Die Anzahl von durch Systemabfragen, beispielsweise Auto Stats-Abfragen, verursachten Suchvorgängen, für die der empfohlene Index in der Gruppe hätte verwendet werden können. Weitere Informationen finden Sie unter Auto Stats-Ereignisklasse. |
system_scans |
bigint | Die Anzahl von durch Systemabfragen verursachten Scanvorgängen, für die der empfohlene Index in der Gruppe hätte verwendet werden können. |
last_system_seek |
datetime | Das Datum und die Uhrzeit des letzten durch Systemabfragen verursachten Systemsuchvorgangs, für den der empfohlene Index in der Gruppe hätte verwendet werden können. |
last_system_scan |
datetime | Das Datum und die Uhrzeit des letzten durch Systemabfragen verursachten Systemscanvorgangs, für den der empfohlene Index in der Gruppe hätte verwendet werden können. |
avg_total_system_cost |
float | Die durchschnittlichen Kosten der Systemabfragen, die durch den Index in der Gruppe reduziert werden könnten. |
avg_system_impact |
float | Durchschnittlicher prozentualer Nutzen, der für Systemabfragen entstünde, wenn diese Gruppe fehlender Indizes implementiert würde. Der Wert bedeutet, dass die Abfragekosten durchschnittlich um diesen Prozentsatz verringert würden, wenn diese Gruppe fehlender Indizes implementiert würde. |
Hinweise
Von jeder Abfrageausführung zurückgegebene sys.dm_db_missing_index_group_stats_query Informationen werden aktualisiert, nicht durch jede Abfragekompilierung oder Neukompilierung. Nutzungsstatistiken werden nicht gespeichert und nur bis zum Neustart der Datenbank-Engine gespeichert.
Datenbankadministratoren sollten regelmäßig Sicherungskopien der Informationen zu fehlenden Indizes erstellen, wenn Sie die Verwendungsstatistiken 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. Sie können auch fehlende Indizes mit Abfragespeicher beibehalten.
Berechtigungen
Um diese dynamische Verwaltungsansicht abzufragen, müssen Benutzern die VIEW SERVER STATE Berechtigung oder jede Berechtigung, die diese VIEW SERVER STATE Berechtigung impliziert, für SQL Server 2019 (15.x) und frühere Versionen erteilt werden.
Erfordert die Berechtigung VIEW SERVER PERFORMANCE STATE auf dem Server, für SQL Server 2022 (16.x) und neuere Versionen.
Beispiele
Die folgenden Beispiele veranschaulichen die Verwendung der sys.dm_db_missing_index_group_stats_query dynamischen Verwaltungsansicht.
A. Suchen des neuesten Abfragetexts für die höchsten 10 erwarteten Verbesserungen für Benutzerabfragen
Die folgende Abfrage gibt den letzten aufgezeichneten Abfragetext für die 10 fehlenden Indizes zurück, die die höchste erwartete kumulative Verbesserung in absteigender Reihenfolge erzeugen würden.
SELECT TOP 10
SUBSTRING
(
sql_text.text,
misq.last_statement_start_offset / 2 + 1,
(
CASE misq.last_statement_start_offset
WHEN -1 THEN DATALENGTH(sql_text.text)
ELSE misq.last_statement_end_offset
END - misq.last_statement_start_offset
) / 2 + 1
),
misq.*
FROM sys.dm_db_missing_index_group_stats_query AS misq
CROSS APPLY sys.dm_exec_sql_text(misq.last_sql_handle) AS sql_text
ORDER BY misq.avg_total_user_cost
* misq.avg_user_impact
* (misq.user_seeks + misq.user_scans) DESC;
Verwandte Inhalte
- Optimieren nicht gruppierter Indizes mit Vorschlägen für fehlende Indizes
- sys.dm_db_missing_index_columns (Transact-SQL)
- 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_exec_sql_text (Transact-SQL)
- INDEX ERSTELLEN (Transact-SQL)
- sys.dm_os_sys_info (Transact-SQL)
- Überwachen der Leistung mithilfe des Abfragespeichers