sys.dm_db_missing_index_group_stats_query (Transact-SQL)
Gilt für: SQL Server 2019 (15.x) Azure SQL-DatenbankAzure SQL Managed Instance
Gibt Informationen zu Abfragen zurück, die einen fehlenden Index aus Gruppen fehlender Indizes benötigten, mit Ausnahme räumlicher Indizes. Pro fehlender Indexgruppe können mehrere Abfragen zurückgegeben werden. Eine fehlende Indexgruppe kann mehrere Abfragen enthalten, die denselben Index benötigten.
In Azure SQL-Datenbank können dynamische Verwaltungssichten keine Informationen verfügbar machen, die sich auf die Datenbankeinschluss auswirken, oder Informationen zu anderen Datenbanken, auf die der Benutzer Zugriff hat. Um die Offenlegung dieser Informationen zu vermeiden, wird jede Zeile, die Daten enthält, die nicht 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 sys.dm_db_missing_index_groups verknüpft index_group_handle 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. Ist immer 0x000, wenn eine systemintern kompilierte gespeicherte Prozedur eine speicheroptimierte Tabelle abfragt. |
last_sql_handle | varbinary(64) | Ein Token, das den Batch oder die gespeicherte Prozedur der letzten kompilierten Anweisung eindeutig identifiziert, die diesen Index benötigt hat. Kann last_sql_handle 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 ab 0 die Startposition der Abfrage an, die die Zeile im Text ihres Batches oder persistenten Objekts für die letzte kompilierte Anweisung beschreibt, die diesen Index in ihrem SQL-Batch benötigt hat. |
last_statement_end_offset | int | Gibt in Bytes ab 0 die Endposition der Abfrage an, die die Zeile im Text ihres Batches oder persistenten Objekts für die letzte kompilierte Anweisung beschreibt, die diesen Index in ihrem SQL-Batch benötigt. |
last_statement_sql_handle | varbinary(64) | Ein Token, das den Batch oder die gespeicherte Prozedur der letzten kompilierten Anweisung eindeutig identifiziert, die diesen Index benötigt hat. Wird von Abfragespeicher verwendet. Im Gegensatz zu last_sql_handle verweist sys.query_store_query_text auf die statement_sql_handle von der Abfragespeicher-Katalogsicht verwendete sys.query_store_query_text.Wenn Abfragespeicher bei der Kompilierung der Abfrage nicht aktiviert war, gibt 0 zurück. |
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. |
Bemerkungen
Von zurückgegebene sys.dm_db_missing_index_group_stats_query
Informationen werden bei jeder Abfrageausführung aktualisiert, nicht bei jeder Abfragekompilierung oder -neukompilierung. Nutzungsstatistiken werden nicht beibehalten und nur beibehalten, bis die Datenbank-Engine neu gestartet wird.
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 fehlende Indizes auch mit Abfragespeicher beibehalten.
Hinweis
Das Resultset für diese DMV ist auf 600 Zeilen beschränkt. Jede Zeile enthält einen fehlenden Index. Wenn Mehr als 600 fehlende Indizes vorhanden sind, sollten Sie die vorhandenen fehlenden Indizes behandeln, damit Sie die neueren anzeigen können.
Berechtigungen
Zum Abfragen dieser dynamischen Verwaltungssicht muss den Benutzern die VIEW SERVER STATE-Berechtigung oder eine Berechtigung, die die VIEW SERVER STATE-Berechtigung impliziert, erteilt werden.
Berechtigungen für SQL Server 2022 und höher
Erfordert die VIEW SERVER PERFORMANCE STATE-Berechtigung auf dem Server.
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 10 am häufigsten 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 bewirken 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;
Nächste Schritte
In den folgenden Artikeln erfahren Sie mehr über das Feature für fehlende Indexe und zugehörige Konzepte:
- 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)
- CREATE INDEX (Transact-SQL)
- sys.dm_os_sys_info (Transact-SQL)
- Abfragespeicher
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für