Partilhar via


sys.dm_db_missing_index_columns (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

Devolve informações sobre colunas de tabelas de base de dados que não têm um índice. sys.dm_db_missing_index_columns é uma função de gestão dinâmica.

Sintaxe

sys.dm_db_missing_index_columns(index_handle)  

Arguments

index_handle
Um inteiro que identifica de forma única um índice em falta. Pode ser obtido a partir dos seguintes objetos de gestão dinâmica:

sys.dm_db_missing_index_details (Transact-SQL)

sys.dm_db_missing_index_groups (Transact-SQL)

Tabela retornada

Nome da coluna Tipo de dados Description
column_id int ID da coluna.
column_name sysname Nome da coluna da tabela.
column_usage varchar(20) Como a coluna é usada pela consulta. Os valores possíveis e as suas descrições são:

IGUALDADE: A coluna contribui para um predicado que expressa igualdade, da forma:
tabela.coluna = constant_value

DESIGUALDADE: A coluna contribui para um predicado que expressa desigualdade, por exemplo, um predicado da forma: table.column>constant_value. Qualquer operador de comparação que não "=" expressa desigualdade.

INCLUIR: A coluna não é usada para avaliar um predicado, mas é usada por outra razão, por exemplo, para cobrir uma consulta.

Observações

A informação devolvida por sys.dm_db_missing_index_columns é atualizada quando uma consulta é otimizada pelo otimizador de consultas e não é mantida. A informação de índice em falta é mantida apenas até o motor da base de dados ser reiniciado. Os administradores de bases de dados devem periodicamente fazer cópias de segurança da informação do índice em falta se quiserem mantê-la após a reciclagem do servidor. Use a sqlserver_start_time coluna no sys.dm_os_sys_info para localizar a última hora de inicialização do mecanismo de banco de dados.

Consistência de Transações

Se uma transação criar ou eliminar uma tabela, as linhas que contêm informação de índice em falta sobre os objetos descartados são removidas deste objeto de gestão dinâmica, preservando a consistência da transação.

Permissions

Os utilizadores devem receber a permissão VIEW SERVER STATE ou qualquer permissão que implique a permissão VIEW SERVER STATE para consultar esta função de gestão dinâmica.

Permissões para SQL Server 2022 e posterior

Requer a permissão VIEW SERVER PERFORMANCE STATE no servidor.

Examples

O exemplo seguinte executa uma consulta contra a Address tabela e depois executa uma consulta usando a sys.dm_db_missing_index_columns vista de gestão dinâmica para devolver as colunas da tabela que não têm um índice.

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  

Sugestões de índice em falta devem ser combinadas, sempre que possível, entre si e com índices existentes na base de dados atual. Aprenda a aplicar estas sugestões para ajustar índices não agrupados com sugestões de índice em falta.

Próximos passos

Saiba mais sobre a funcionalidade de índice em falta nos artigos seguintes: