Partilhar via


sys.dm_db_missing_index_columns (Transact-SQL)

Aplica-se a: SQL ServerBanco de Dados SQL do Azure Instância Gerenciada de SQL do Azure

Retorna informações sobre colunas de tabela de banco de dados que não têm um índice. sys.dm_db_missing_index_columns é uma função de gerenciamento dinâmico.

Sintaxe

sys.dm_db_missing_index_columns(index_handle)  

Argumentos

index_handle
Número inteiro que identifica exclusivamente um índice ausente. Pode ser obtido nos seguintes objetos de gerenciamento dinâmico:

sys.dm_db_missing_index_details (Transact-SQL)

sys.dm_db_missing_index_groups (Transact-SQL)

Tabela retornada

Nome da coluna Tipo de dados Descrição
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 suas descrições são:

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

INEQUAÇÃO: Column contribui para um predicado que expressa desigualdade, por exemplo, um predicado da forma: table.column>constant_value. Qualquer operador de comparação diferente de "=" expressa desigualdade.

INCLUDE: Column não é usado para avaliar um predicado, mas é usado por outro motivo, por exemplo, para cobrir uma consulta.

Comentários

As informações retornadas por sys.dm_db_missing_index_columns são atualizadas quando uma consulta é otimizada pelo otimizador de consulta e não são persistentes. As informações de índice ausentes são mantidas somente até que o mecanismo de banco de dados seja reiniciado. Os administradores de banco de dados devem periodicamente gerar cópias de backup de informações de índice ausente se quiserem mantê-las após o desligamento e a reinicialização do servidor. Use a coluna sqlserver_start_time em sys.dm_os_sys_info para localizar a última hora de inicialização do mecanismo de banco de dados.

Consistência de transação

Se uma transação criar ou descartar uma tabela, as linhas contendo as informações de índice ausente sobre os objetos descartados serão removidas do objeto de gerenciamento dinâmico, preservando a consistência da transação.

Permissões

Os usuários devem receber a permissão VIEW SERVER STATE ou qualquer permissão que implique que a permissão VIEW SERVER STATE consulte essa função de gerenciamento dinâmico.

Permissões do SQL Server 2022 e posteriores

É necessária a permissão VIEW SERVER PERFORMANCE STATE no servidor.

Exemplos

O exemplo a seguir executa uma consulta na tabela Address e executa uma consulta usando a exibição de gerenciamento dinâmico sys.dm_db_missing_index_columns para retornar as colunas de tabela com índice ausente.

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  

As sugestões de índice ausente devem ser combinadas quando possível entre si e com os índices existentes no banco de dados atual. Saiba como aplicar essas sugestões em ajustar índices não clusterizados com sugestões de índice ausente.

Próximas etapas

Saiba mais sobre o recurso de índice ausente nos seguintes artigos: