Megosztás a következőn keresztül:


sys.dm_db_missing_index_columns (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Információt ad vissza az adatbázistábla oszlopairól, amelyekről hiányzik az index. sys.dm_db_missing_index_columns dinamikus menedzsment funkció.

Szemantika

sys.dm_db_missing_index_columns(index_handle)  

Arguments

index_handle
Egy egész szám, amely egyedien azonosítja a hiányzó indexet. Ez a következő dinamikus menedzsment objektumokból érhető el:

sys.dm_db_missing_index_details (Transact-SQL)

sys.dm_db_missing_index_groups (Transact-SQL)

Visszaadott tábla

Oszlop név Adattípus Description
column_id int Az oszlop azonosítója.
column_name sysname A táblázatoszlop neve.
column_usage varchar(20) Hogyan használja az oszlopot a lekérdezés. A lehetséges értékek és leírásaik a következők:

EGYENLŐSÉG: Az oszlop hozzájárul egy predikátumhoz, amely az egyenlőséget fejezi ki, a következő formában:
table.oszlop = constant_value

EGYENLŐTLENSÉG: Az oszlop hozzájárul egy predikátumhoz, amely egyenlőtlenséget fejez ki, például egy olyan predikátumot, amelynek formája a táblázat.oszlop>constant_value. Bármely összehasonlító operátor, a "="-n kívül, egyenlőtlenséget fejez ki.

INCLUDE: Az oszlopot nem használják predikátum értékelésére, hanem más okból, például egy lekérdezés lefedésére.

Megjegyzések

A visszaküldött sys.dm_db_missing_index_columns információk frissülnek, amikor a lekérdezésoptimalizáló egy lekérdezést optimalizál, és nem marad fenn. A hiányzó indexinformációk csak addig maradnak meg, amíg az adatbázis motort újraindítják. Az adatbázis-adminisztrátoroknak időnként készíteniük kell a hiányzó indexinformációkat, ha azt a szerver újrahasznosítása után is meg akarják tartani. A sqlserver_start_time oszlopával keresse meg az adatbázismotor utolsó indítási idejét.

Tranzakciós konzisztencia

Ha egy tranzakció létrehoz vagy eltávolít egy táblát, a hiányzó indexinformációkat tartalmazó sorokat eltávolítják ebből a dinamikus menedzsment objektumból, megőrizve a tranzakciókonzisztenciát.

Permissions

A felhasználóknak meg kell kapni a VIEW SERVER STATE engedélyt, vagy bármilyen olyan engedélyt, amely a VIEW SERVER STATE engedélyt jelent a dinamikus menedzsment funkció lekérdezéséhez.

Engedélyek az SQL Server 2022-hez és újabb verziókhoz

A KISZOLGÁLÓ TELJESÍTMÉNYÁLLAPOTÁNAK MEGTEKINTÉSE engedélyre van szükség a kiszolgálón.

Példák

A következő példa lefuttat egy lekérdezést a Address táblán, majd sys.dm_db_missing_index_columns a dinamikus menedzsment nézetet használva, hogy visszaadja azokat a táblázatoszlopokat, amelyekből hiányzik az 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  

A hiányzó indexjavaslatokat lehetőség szerint egymással és a jelenlegi adatbázisban lévő indexekkel kell kombinálni. Tanuld meg, hogyan alkalmazd ezeket a javaslatokat a nem klaszterezett indexek hangolójában, amelyekben hiányzó indexjavaslatok vannak.

Következő lépések

További információk a hiányzó indexfunkcióról a következő cikkekben találhatók: