sys.dm_db_missing_index_columns (Transact-SQL)

Aplica-se a: SQL ServerBase de Dados SQL do AzureAzure SQL Managed Instancebase de dados SQL em 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)  

Argumentos

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 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 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. Utilize a coluna sqlserver_start_time na vista sys.dm_os_sys_info para localizar a hora do último arranque do motor da base 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 VIEW permissão SERVER STATE ou qualquer permissão que implique a VIEW permissão SERVER STATE para consultar esta função de gestão dinâmica.

Permissões para SQL Server 2022 e posterior

Requer VIEW permissão ESTADO DE DESEMPENHO DO SERVIDOR no servidor.

Exemplos

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.