I feel this is premature optimisation because our application is not even released yet. I suggested to monitor for slow queries once we go live and then add indices accordingly.
Você não pode tratar seus usuários finais e o ambiente de produção como garantia de qualidade. Em outras palavras, você está dizendo que vai descobrir isso em produção. Eu não acho que é o caminho certo, e eu vejo essa abordagem dar errado todos os dias .
Você precisa manter uma coisa em mente, já que não pode pintar isso com um pincel largo.
Qual é a sua carga de trabalho comum ?
Isso pode parecer óbvio ou tedioso, mas é significativo na prática. Se você tiver 10 consultas que compõem 98% de sua carga de trabalho (bastante comum, acredite ou não), minha recomendação seria uma análise difícil antes da produção . Com dados realistas e representativos, certifique-se de que essas 10 consultas sejam as melhores possíveis (o perfeito é um desperdício de tempo valioso e quase não é possível).
Para as outras 200 consultas que compõem os 2% da carga de trabalho , são aquelas que provavelmente não valem muito esforço, e comporão a solução de problemas perf. esquisitices na produção. Isso também é uma realidade, e não uma coisa terrivelmente ruim. Mas isso não significa ignorar as melhores práticas de indexação ou fazer suposições estimadas sobre a recuperação de dados.
É comum e boa prática descobrir o desempenho do banco de dados antes da produção. Na verdade, há uma posição relativamente comum para esse tipo de coisa chamada DBA de desenvolvimento .
Mas ...
Alguns levam isso longe demais e ficam loucos adicionando índices "apenas no caso". Alguém recomenda que este é um índice ausente? Adicione e quatro outras variações. Também é uma má ideia. Você precisa não apenas pensar em sua recuperação de dados, mas e a modificação de dados? Quanto mais índices você tiver em uma tabela, em geral, mais sobrecarga você terá quando modificar os dados.
Como a maioria das coisas, há um equilíbrio saudável.
Como uma divertida nota secundária ... A pluralização do "Index"
"Índices" são para pessoas financeiras
"Índices" são para nós