Articles

sys.dm_db_missing_index_details (Transact-SQL)

Posted by admin
  • 03/20/2017
  • 2 minutes to read
    • W
    • r
    • c
    • M
    • s
    • +5

Applies to: SQL Server (all supported versions) Azure SQL Database

Returns detailed information about missing indexes, excluding spatial indexes.

In Azure SQL Database können dynamische Verwaltungsansichten keine Informationen verfügbar machen, die sich auf die Datenbankeindämmung auswirken würden, 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
index_handle int Identifiziert einen bestimmten fehlenden Index. Die Kennung ist auf dem Server eindeutig. index_handle ist der Schlüssel dieser Tabelle.
database_id smallint Gibt die Datenbank an, in der sich die Tabelle mit dem fehlenden Index befindet.
object_id int Identifiziert die Tabelle, in der der Index fehlt.
equality_columns nvarchar(4000) Kommagetrennte Liste der Spalten, die zu Gleichheitsprädikaten des Formulars beitragen:
Tabelle.spalte =constant_value
inequality_columns nvarchar(4000) Kommagetrennte Liste von Spalten, die zu Ungleichungsprädikaten beitragen, z. B. Prädikate der Form:
Tabelle.column > constant_value
Jeder andere Vergleichsoperator als „=“ drückt Ungleichheit aus.
included_columns nvarchar(4000) Kommagetrennte Liste der Spalten, die als Deckspalten für die Abfrage benötigt werden. Weitere Informationen zum Abdecken oder Einbeziehen von Spalten finden Sie unter Erstellen von Indizes mit einbezogenen Spalten.
Ignorieren Sie included_columns für speicheroptimierte Indizes (sowohl Hash- als auch speicheroptimierte nicht gruppierte Indizes). Alle Spalten der Tabelle sind in jedem speicheroptimierten Index enthalten.
anweisung nvarchar(4000) Name der Tabelle, in der der Index fehlt.

Informationen, die von sys.dm_db_missing_index_details zurückgegeben werden, werden aktualisiert, wenn eine Abfrage vom Abfrageoptimierer optimiert wird, und bleiben nicht erhalten. Fehlende Indexinformationen werden nur so lange gespeichert, bis SQL Server neu gestartet wird. Datenbankadministratoren sollten regelmäßig Sicherungskopien der fehlenden Indexinformationen erstellen, wenn sie diese nach dem Serverrecycling beibehalten möchten.

Um festzustellen, zu welchen fehlenden Indexgruppen ein bestimmter fehlender Index gehört, können Sie die dynamische Verwaltungsansicht sys.dm_db_missing_index_groups abfragen, indem Sie sie mit sys.dm_db_missing_index_details basierend auf der Spalte index_handle verknüpfen.

Hinweis

Die Ergebnismenge für diese DMV ist auf 600 Zeilen beschränkt. Jede Zeile enthält einen fehlenden Index. Wenn Sie mehr als 600 fehlende Indizes haben, sollten Sie die vorhandenen fehlenden Indizes adressieren, damit Sie die neueren anzeigen können.

Verwenden fehlender Indexinformationen in CREATE INDEX-Anweisungen

Um die von sys.dm_db_missing_index_details zurückgegebenen Informationen für speicheroptimierte und festplattenbasierte Indizes in eine CREATE INDEX-Anweisung zu konvertieren, sollten Gleichheitsspalten vor die Ungleichungsspalten gestellt werden, und zusammen sollten sie den Schlüssel des Index bilden. Included-Spalten sollten der CREATE INDEX-Anweisung mithilfe der INCLUDE-Klausel hinzugefügt werden. Um eine effektive Reihenfolge für die Gleichheitsspalten zu bestimmen, ordnen Sie sie basierend auf ihrer Selektivität an: Listen Sie zuerst die selektivsten Spalten auf (ganz links in der Spaltenliste).

Weitere Informationen zu speicheroptimierten Indizes finden Sie unter Indizes für speicheroptimierte Tabellen.

Transaktionskonsistenz

Wenn eine Transaktion eine Tabelle erstellt oder löscht, werden die Zeilen mit fehlenden Indexinformationen zu den gelöschten Objekten aus diesem dynamischen Verwaltungsobjekt entfernt, wobei die Transaktionskonsistenz erhalten bleibt.

Berechtigungen

Erfordert auf SQL Server die Berechtigung VIEW SERVER STATE.
Für SQL Database Basic-, S0- und S1-Serviceziele und für Datenbanken in Elastic Pools ist das Server admin– oder ein Azure Active Directory admin -Konto erforderlich. Bei allen anderen SQL-Datenbankdienstzielen ist die Berechtigung VIEW DATABASE STATE in der Datenbank erforderlich.

Siehe auch

Related Post

Leave A Comment