Primeiramente, gostaria de parabenizar a Alura pelo bom curso. Creio que o curso foi bastante produtivo, tentando ao máximo simular um ambiente com muitos dados, possibilitando assim que nós alunos possamos colocar de fato em prática a otimização de queries.
Isto posto, fiquei imaginando, baseado na consulta do relatório utilizado no exemplo do curso (Relatorio-Faturamento-Classificacao.sql), uma situação real. Imaginemos que essa consulta já faz parte de um banco de dados com índices e tabelas com chaves primárias e estrangeiras mantendo a integridade referencial. Imaginemos que essa base de dados possui o triplo de registros e a consulta do relatório leve inicialmente uns 10 segundos para rodar.
Como a consulta é feita baseada em mês e ano, uma provável solução seria criar um índice no campo tb_nota.data. Porém, baseado no arquivo mencionado acima, mesmo que o índice fosse criado, não resolveria o problema porque a query usa funções de conversão de tipos (month e year) para fazer a consulta, o que anularia o efeito do índice. Uma solução seria fazer uma consulta no campo data entre o primeiro e o último dia do mês.
Creio que seria interessante abordar esse tópico no curso.
Desde já agradeço a atenção dispensada.
Felipe Carvalho