Temos um banco de dados muito grande, com centenas de índices não utilizados, de acordo com as estatísticas da DMV, que se acumulam desde a última reinicialização do servidor, em julho. Um de nossos DBAs fez as seguintes declarações de advertência, que não fazem sentido para mim:
- Antes de soltar um índice, precisamos garantir que ele não imponha uma restrição de exclusividade, pois o otimizador de consulta pode precisar que esse índice exista.
- Sempre que um índice é criado, as estatísticas relacionadas a esse índice também são criadas no SQL Server. Uma consulta pode não estar usando o índice, mas pode estar usando suas estatísticas. Portanto, podemos ter uma situação, depois de soltar um índice, um determinado desempenho de consulta fica muito ruim. O SQL Server não mantém as estatísticas de uso das estatísticas. Embora tenhamos o recurso "Criar estatísticas automaticamente" ativado em nosso banco de dados, não sei quais todos os parâmetros devem ser atendidos internamente antes que o otimizador de consultas crie as estatísticas ausentes.
Em relação ao item 1, parece-me que o SQL Server realmente procuraria o índice para determinar a exclusividade antes que uma inserção / atualização fosse feita e, portanto, o índice não seria exibido como não sendo usado.
Em relação ao item 2, isso é realmente possível?
A propósito, quando digo que um índice não é usado, quero dizer que não há buscas nem verificações.