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.

i Azure SQL Database kan dynamiska hanteringsvyer inte exponera information som skulle påverka databasinneslutning eller exponera information om andra databaser som användaren har åtkomst till. För att undvika att exponera denna information filtreras varje rad som innehåller data som inte tillhör den anslutna klienten bort.

kolumnnamn datatyp beskrivning
index_handle int identifierar ett visst saknat index. Identifieraren är unik över servern. index_handle är nyckeln till denna tabell.
database_id smallint identifierar databasen där tabellen med det saknade indexet finns.
object_id int identifierar tabellen där indexet saknas.
equality_columns nvarchar(4000) kommaseparerad lista över kolumner som bidrar till jämlikhet predikat av formuläret:
tabell.kolumn = constant_value
inequality_columns nvarchar(4000) kommaseparerad lista över kolumner som bidrar till ojämlikhet predikat, till exempel predikat av formen:
tabell.kolumn > constant_value
alla jämförelseoperatörer än ”=” uttrycker ojämlikhet.
included_columns nvarchar(4000) kommaseparerad lista över kolumner som behövs som täckande kolumner för frågan. Mer information om att täcka eller inkludera kolumner finns i skapa index med inkluderade kolumner.
för minnesoptimerade index (både hash och minnesoptimerade nonclustered), ignorera included_columns. Alla kolumner i tabellen ingår i varje minnesoptimerat index.
uttalande nvarchar(4000) namn på tabellen där indexet saknas.

anmärkningar

Information som returneras av sys.dm_db_missing_index_details uppdateras när en fråga optimeras av query optimizer och kvarstår inte. Saknad indexinformation behålls endast tills SQL Server startas om. Databasadministratörer bör regelbundet göra säkerhetskopior av den saknade indexinformationen om de vill behålla den efter serveråtervinning.

för att avgöra vilka saknade indexgrupper ett visst saknat index är en del av, kan du fråga sys.dm_db_missing_index_groups dynamiska hanteringsvy genom att kombinera den med sys.dm_db_missing_index_details baserat på index_handle-kolumnen.

notera

resultatet för denna DMV är begränsat till 600 rader. Varje rad innehåller ett saknat index. Om du har mer än 600 saknade index bör du ta itu med de befintliga saknade indexen så att du sedan kan se de nyare.

använda saknad indexinformation I CREATE INDEX-satser

för att konvertera informationen som returneras av sys.dm_db_missing_index_details till ett CREATE INDEX-uttalande för både minnesoptimerade och diskbaserade index, bör jämställdhetskolumner läggas före ojämlikhetskolumnerna, och tillsammans ska de göra indexets nyckel. Inkluderade kolumner ska läggas till I CREATE INDEX-satsen med hjälp av INCLUDE-satsen. För att bestämma en effektiv ordning för jämställdhetskolumnerna, beställ dem baserat på deras selektivitet: lista de mest selektiva kolumnerna först (längst till vänster i kolumnlistan).

mer information om minnesoptimerade index finns i index för Minnesoptimerade tabeller.

Transaktionskonsistens

om en transaktion skapar eller släpper en tabell tas raderna som innehåller saknad indexinformation om de tappade objekten bort från det här dynamiska hanteringsobjektet, vilket bevarar transaktionskonsistensen.

behörigheter

på SQL Server, kräver VIEW SERVER STATE tillstånd.
på SQL Database Basic, S0 och S1 servicemål och för databaser i elastiska pooler krävs Server admin eller ett Azure Active Directory admin – konto. På alla andra SQL Database service-mål krävs behörigheten VIEW DATABASE STATE i databasen.

Se Även

Related Post

Leave A Comment