sys.dm_db_missing_index_group_stats (Transact-SQL)
Aplica-se a: SQL ServerBanco de Dados SQL do Azure Instâ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 afetariam a contenção do banco de dados ou expor informações sobre outros bancos de dados aos quais o usuário tem acesso. Para evitar a exposição dessas 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 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 Auto Stats. |
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 mantidas 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 índice 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 nesta 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 do SQL Server 2022 e posteriores
É necessária a permissão VIEW SERVER PERFORMANCE STATE no servidor.
Exemplos
Os exemplos a seguir ilustram como usar a sys.dm_db_missing_index_group_stats
exibição de gerenciamento dinâmico. Saiba mais sobre as diretrizes para usar índices ausentes em ajustar índices não clusterizados com sugestões de índice ausente.
R. 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 este 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 DDL CREATE INDEX para implementar índices ausentes, liste primeiro as colunas de igualdade 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 ausente.
Próximas etapas
Saiba mais sobre o recurso de índice ausente nos seguintes artigos:
- Ajustar índices não clusterizados com sugestões de índice ausente
- sys.dm_db_missing_index_columns (Transact-SQL)
- sys.dm_db_missing_index_details (Transact-SQL)
- sys.dm_db_missing_index_groups (Transact-SQL)
- sys.dm_db_missing_index_group_stats_query (Transact-SQL)
- CREATE INDEX (Transact-SQL)
- sys.dm_os_sys_info (Transact-SQL)