Eu estava analisando uma consulta usando o "Database Engine Tuning Advisor". Durante esse tempo, o banco de dados começou a receber bloqueios, consultas de execução longa e acabou reiniciando a instância. Quando verifiquei depois disso, descobri que alguns drop index
comandos foram executados.
drop index [dbo].[Profile].[_dta_index_Profile_7_1563152614__K15_K1]
Por quê isso aconteceu? A consulta que eu estava ajustando não estava na tabela de perfil! Como posso verificar se esse índice já estava no sistema antes ou foi criado durante a análise?
Os índices que foram criados e descartados pelo DTA eram provavelmente índices hipotéticos - aqueles que o DTA cria durante a execução para executar sua análise e deve (mas nem sempre) excluir uma vez feito.
Esses índices hipotéticos podem ser criados mesmo se você não estiver procurando ajustar essa tabela específica! Eu recomendo que você consulte alguns dos DMVs do sistema diretamente para descobrir os índices ausentes. Isso evita o comportamento irritante do DTA e fornece alguns insights mais granulares sobre seus problemas de índice.
Você pode usar a consulta abaixo do SQL Server Central para detectar quaisquer índices hipotéticos restantes do DTA que devem ser removidos.