sys.dm_db_missing_index_group_stats (Transact-SQL)

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

Retorna informações resumidas sobre grupos de índices ausentes, excluindo índices espaciais.

No banco de dados SQL do Azure, as exibições de gerenciamento dinâmico não podem expor informações que impactem a contenção do banco de dados ou expõem informações sobre outros bancos de dados aos quais o usuário tem acesso. Para evitar expor essas informações, todas as linhas que contêm dados que não pertencem ao locatário conectado são filtradas.

Nome da coluna Tipo de dados Descrição
group_handle int Identifica um grupo de índices ausentes. Esse identificador é exclusivo no servidor.

As outras colunas fornecem informações sobre todas as consultas para as quais o índice no grupo é considerado ausente.

Um grupo de índice contém apenas um índice.

Pode ser unido a index_group_handle em sys.dm_db_missing_index_groups.
unique_compiles bigint Número de compilações e recompilações que se beneficiariam deste grupo de índice ausente. Compilações e recompilações de muitas consultas diferentes podem contribuir para esse valor de coluna.
user_seeks bigint Número de buscas geradas por consultas de usuário para as quais o índice recomendado no grupo poderia ter sido usado.
user_scans bigint Número de exames gerados por consultas de usuário para as quais o índice recomendado no grupo poderia ter sido usado.
last_user_seek datetime Data e hora da última busca gerada por consultas de usuário para as quais o índice recomendado no grupo poderia ter sido usado.
last_user_scan datetime Data e hora do último exame gerado por consultas de usuário para as quais o índice recomendado no grupo poderia ter sido usado.
avg_total_user_cost float Custo médio das consultas de usuário que poderia ser reduzido pelo índice no grupo.
avg_user_impact float Benefício da porcentagem média que as consultas de usuário poderiam experimentar se esse grupo de índices ausentes fosse implementado. O valor indica que o custo da consulta ficaria na média dessa porcentagem se esse grupo de índices ausentes fosse implementado.
system_seeks bigint Número de buscas geradas por consultas de sistema, como consultas de estatística automáticas, para as quais o índice recomendado no grupo poderia ter sido usado. Para obter mais informações, consulte Classe de evento Estatísticas Automáticas.
system_scans bigint Número de exames gerados por consultas de sistema para as quais o índice recomendado no grupo poderia ter sido usado.
last_system_seek datetime Data e hora da última busca gerada no sistema por consultas de sistema para as quais o índice recomendado no grupo poderia ter sido usado.
last_system_scan datetime Data e hora do último exame gerado no sistema por consultas de sistema para as quais o índice recomendado no grupo poderia ter sido usado.
avg_total_system_cost float Custo médio das consultas de sistema que poderia ser reduzido pelo índice no grupo.
avg_system_impact float Benefício de porcentagem média que as consultas de sistema poderiam experimentar se esse grupo de índices ausentes fosse implementado. O valor indica que o custo da consulta ficaria na média dessa porcentagem se esse grupo de índices ausentes fosse implementado.

Comentários

As informações retornadas por sys.dm_db_missing_index_group_stats são atualizadas por cada execução de consulta, não por cada compilação ou recompilação de consulta. As estatísticas de uso não são persistentes e 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 manter as estatísticas de uso 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.

Observação

O conjunto de resultados para essa DMV é limitado a 600 linhas. Cada linha contém um índice ausente. Se você tiver mais de 600 índices ausentes, deverá abordar os índices ausentes existentes para poder exibir os mais recentes.

Um grupo de índices ausente pode ter várias consultas que precisavam do mesmo índice. Para obter mais informações sobre consultas individuais que precisavam de um índice específico nessa DMV, consulte sys.dm_db_missing_index_group_stats_query.

Permissões

Para consultar essa exibição de gerenciamento dinâmico, os usuários devem receber a permissão VIEW SERVER STATE ou qualquer permissão que implique essa permissão.

Permissões para SQL Server 2022 e posteriores

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

Exemplos

Os exemplos a seguir ilustram como usar a exibição sys.dm_db_missing_index_group_stats de gerenciamento dinâmico. Saiba mais sobre diretrizes para usar índices ausentes em ajustar índices não clusterizados com sugestões de índice ausentes.

a. Localizar os 10 índices ausentes com o aperfeiçoamento antecipado mais alto para consultas de usuário

A consulta seguinte determina quais os 10 índices ausentes que produziriam o aperfeiçoamento cumulativo antecipado mais alto, em ordem decrescente, para consultas de usuário.

SELECT TOP 10 *  
FROM sys.dm_db_missing_index_group_stats  
ORDER BY avg_total_user_cost * avg_user_impact * (user_seeks + user_scans)DESC;  

B. Localizar os índices ausentes individuais e seus detalhes de coluna de um determinado grupo de índice ausente

A consulta seguinte determina quais índices ausentes fazem parte de um determinado grupo de índices ausentes e exibe os detalhes de sua coluna. Para o bem deste exemplo, o índice group_handle ausente é 24.

SELECT migs.group_handle, mid.*  
FROM sys.dm_db_missing_index_group_stats AS migs  
INNER JOIN sys.dm_db_missing_index_groups AS mig  
    ON (migs.group_handle = mig.index_group_handle)  
INNER JOIN sys.dm_db_missing_index_details AS mid  
    ON (mig.index_handle = mid.index_handle)  
WHERE migs.group_handle = 24;  

Esta consulta fornece o nome do banco de dados, do esquema e da tabela em que um índice está ausente. Fornece também os nomes das colunas que deveriam ser usadas para a chave de índice. Ao escrever a instrução CREATE INDEX DDL para implementar índices ausentes, liste as colunas de igualdade primeiro e, em seguida, as colunas de desigualdade na cláusula ON <table_name> da instrução CREATE INDEX. As colunas incluídas devem ser listadas na cláusula INCLUDE da instrução CREATE INDEX. Para determinar uma ordem efetiva para as colunas iguais, ordene-as com base em sua seletividade, listando as colunas mais seletivas primeiro (a mais à esquerda na lista de colunas). Saiba como aplicar sugestões de índice ausentes.

Próximas etapas

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