sys.dm_db_missing_index_columns (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Returnerar information om databastabellskolumner som saknar ett index. sys.dm_db_missing_index_columns är en dynamisk ledningsfunktion.

Syntax

sys.dm_db_missing_index_columns(index_handle)  

Arguments

index_handle
Ett heltal som entydigt identifierar ett saknat index. Den kan erhållas från följande dynamiska hanteringsobjekt:

sys.dm_db_missing_index_details (Transact-SQL)

sys.dm_db_missing_index_groups (Transact-SQL)

Tabell returnerad

Kolumnnamn Datatyp Description
column_id int ID för kolumnen.
column_name sysname Namnet på tabellkolumnen.
column_usage Varchar(20) Hur kolumnen används av frågan. De möjliga värdena och deras beskrivningar är:

LIKHET: Kolumnen bidrar till ett predikat som uttrycker likhet, av formen:
table.column = constant_value

OLIKHET: Kolumn bidrar till ett predikat som uttrycker olikhet, till exempel ett predikat av formen: table.column>constant_value. Alla jämförelseoperatorer utom "=" uttrycker olikhet.

INKLUDERA: Kolumn används inte för att utvärdera ett predikat, utan används av en annan anledning, till exempel för att täcka en fråga.

Anmärkningar

Information som returneras av sys.dm_db_missing_index_columns uppdateras när en fråga optimeras av frågeoptimeraren och behålls inte. Saknad indexinformation sparas endast tills databasmotorn startas om. Databasadministratörer bör regelbundet göra säkerhetskopior av den saknade indexinformationen om de vill behålla den efter serveråtervinning. Använd kolumnen sqlserver_start_time i sys.dm_os_sys_info för att hitta den senaste starttiden för databasmotorn.

Transaktionskonsistens

Om en transaktion skapar eller släpper en tabell tas raderna som innehåller saknad indexinformation om de borttagna objekten bort från detta dynamiska hanteringsobjekt, vilket bevarar transaktionskonsistensen.

Permissions

Användare måste beviljas tillståndet VISA SERVERTILLSTÅND eller någon behörighet som innebär VISA SERVERTILLSTÅND för att fråga denna dynamiska hanteringsfunktion.

Behörigheter för SQL Server 2022 och senare

Kräver BEHÖRIGHET FÖR VISNINGSSERVERNS PRESTANDATILLSTÅND på servern.

Examples

Följande exempel kör en fråga mot Address tabellen och kör sedan en fråga med dynamisk hanteringsvy sys.dm_db_missing_index_columns för att returnera tabellkolumner som saknar ett index.

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  

Saknade indexförslag bör kombineras när det är möjligt med varandra och med befintliga index i den nuvarande databasen. Lär dig hur du kan tillämpa dessa förslag i takt med icke-klustrade index med saknade indexförslag.

Nästa steg

Läs mer om den saknade indexfunktionen i följande artiklar: