Delen via


sys.dm_db_missing_index_columns (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-database in Microsoft Fabric

Geeft informatie terug over databasetabelkolommen die een index missen. sys.dm_db_missing_index_columns is een dynamische managementfunctie.

Syntaxis

sys.dm_db_missing_index_columns(index_handle)  

Arguments

index_handle
Een geheel getal dat een ontbrekende index uniek identificeert. Het kan worden verkregen uit de volgende dynamische beheerobjecten:

sys.dm_db_missing_index_details (Transact-SQL)

sys.dm_db_missing_index_groups (Transact-SQL)

Tabel geretourneerd

Kolomnaam Gegevenstype Description
column_id int Id van de kolom.
column_name sysname Naam van de kolom van de tabel.
column_usage Varchar(20) Hoe de kolom door de query wordt gebruikt. De mogelijke waarden en hun beschrijvingen zijn:

GELIJKHEID: De kolom draagt bij aan een predicaat dat gelijkheid uitdrukt, van de vorm:
table.column = constant_value

ONGELIJKHEID: De kolom draagt bij aan een predicaat dat ongelijkheid uitdrukt, bijvoorbeeld een predicaat van de vorm: table.column>constant_value. Elke vergelijkingsoperator anders dan "=" drukt ongelijkheid uit.

INCLUDE: De kolom wordt niet gebruikt om een predicaat te evalueren, maar wordt om een andere reden gebruikt, bijvoorbeeld om een query te dekken.

Opmerkingen

Informatie die door sys.dm_db_missing_index_columns wordt teruggestuurd, wordt bijgewerkt wanneer een query wordt geoptimaliseerd door de queryoptimizer en wordt niet behouden. Ontbrekende indexinformatie wordt alleen bewaard totdat de database-engine opnieuw is opgestart. Databasebeheerders zouden periodiek back-ups moeten maken van de ontbrekende indexinformatie als ze deze na serverrecycling willen behouden. Gebruik de kolom sqlserver_start_time in sys.dm_os_sys_info om de laatste opstarttijd van de database-engine te vinden.

Transactieconsistentie

Als een transactie een tabel aanmaakt of verwijdert, worden de rijen met ontbrekende indexinformatie over de gedropte objecten uit dit dynamische beheerobject verwijderd, waardoor de consistentie van de transactie behouden blijft.

Permissions

Gebruikers moeten de toestemming VIEW SERVER STATE krijgen of elke toestemming die de VIEW SERVER STATE toestemming impliceert om deze dynamische beheerfunctie te bevragen.

Machtigingen voor SQL Server 2022 en hoger

Vereist de machtiging PRESTATIESTATUS VAN DE WEERGAVESERVER op de server.

Voorbeelden

Het volgende voorbeeld voert een query uit op de Address tabel en voert vervolgens een query uit met de sys.dm_db_missing_index_columns dynamische beheerweergave om de tabelkolommen terug te geven die een index missen.

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  

Ontbrekende indexsuggesties moeten waar mogelijk worden gecombineerd met elkaar en met bestaande indexen in de huidige database. Leer hoe je deze suggesties toepast om niet-geclusterde indexen met ontbrekende indexsuggesties af te stemmen.

Volgende stappen

Lees meer over de ontbrekende indexfunctie in de volgende artikelen: