Compartilhar via


sys.dm_db_missing_index_columns (Transact-SQL)

Retorna informações sobre colunas de tabela de banco de dados sem-índice, excluindo os índices espaciais. sys.dm_db_missing_index_columns é uma função de gerenciamento dinâmico.

Sintaxe

sys.dm_db_missing_index_columns(index_handle)

Argumentos

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 são:

ValorDescrição
EQUALITYA coluna contribui com um predicado que expressa igualdade, do formulário: table.column =constant_value
INEQUALITYA coluna contribui com um predicado que expressa desigualdade, por exemplo, um predicado do formulário: table.column > constant_value Qualquer operador de comparação diferente de "=" expressa desigualdade. Para obter uma lista completa de operadores de comparação, consulte Operadores de comparação (Mecanismo de Banco de Dados).
INCLUDEA coluna não é usada para avaliar um predicado, mas por outro motivo, por exemplo, para cobrir uma consulta.

Comentários

As informações retornadas por sys.dm_db_missing_index_columns serão atualizadas quando uma consulta for otimizada pelo otimizador de consulta e não persistirão. As informações do índice ausente são mantidas apenas até o SQL Server ser reiniciado. Os administradores de banco de dados devem periodicamente gerar cópias de backup das informações do índice ausente se quiserem mantê-las após o desligamento e a reinicialização do servidor.

Para obter informações sobre como habilitar e desabilitar a coleta de informações de índice, consulte Sobre o recurso de índices ausentes.

O resultado da função de gerenciamento dinâmico sys.dm_db_missing_index_columns pode ser usado por qualquer ferramenta que leia as informações de índice correspondentes a um index_handle, processe as informações e as converta em instruções CREATE INDEX DDL que implementem o índice ausente. Para obter mais informações sobre como criar instruções DDL, consulte Usando informações de índice ausente para gravar instruções CREATE INDEX.

Para obter mais informações sobre as limitações desse recurso, consulte Limitações do recurso de índices ausentes.

Consistência da transação

Se uma transação cria ou descarta uma tabela, as linhas contendo as informações do índice ausente sobre os objetos descartados são removidas do objeto de gerenciamento dinâmico, preservando a consistência da transação. Para obter mais informações sobre a consistência de transação em relação aos objetos de gerenciamento dinâmicos dos índices ausentes, consulte Sobre o recurso de índices ausentes.

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.

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 AdventureWorks2008R2;
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