Executando o Microsoft SQL Server Profiler de vez em quando, ele me sugere um monte de novos índices e estatísticas para criar ("...97% de melhoria estimada...").
Pelo que entendi, cada índice adicionado pode tornar uma SELECT
consulta SQL mais rápida, mas também uma consulta UPDATE
ou INSERT
mais lenta, pois os índices precisam ser ajustados.
O que eu me pergunto é: quando tenho índices/estatísticas "demais"?
Talvez não haja uma resposta clara sobre isso, mas alguma regra de ouro.
Seu perfil de carga é o fator mais importante para responder a esta pergunta.
Se sua carga for de leitura intensiva, você deseja que os índices satisfaçam suas consultas mais pesadas ou mais frequentes.
Se sua carga for de gravação intensiva, indexe com cuidado. Índice para satisfazer uma busca de necessidades de ATUALIZAÇÃO, por exemplo, bem como seus um ou dois SELECTs mais caros.
Se sua carga for OLAP, indexe com moderação, pois você estará verificando as tabelas de destino de qualquer maneira.
Como você sabe que tem muitos índices?
Quando você pode ver que alguns deles não são usados por nenhuma consulta.
Um DELETE, UPDATE ou INSERT frequente mostra um plano de consulta que envolve várias alterações de índice dispendiosas (ou seja, um insert , update ou delete de índice não agrupado ). Use seu bom senso para determinar se a penalidade nessas instruções DML vale o ganho obtido com os índices que precisam ser atualizados.
Se você tiver índices que estão sendo mantidos, mas nunca estão sendo usados (ou raramente estão sendo usados), então você tem muitos índices. Se todos os seus índices estão sendo usados para melhorar o desempenho do usuário, então você não tem muitos.