Como você está procurando informações específicas da Oracle, eu recomendaria o blog Ask Tom na Oracle. Em geral, acho que você encontrará o conselho para não ajustar a consulta. Você receberá bons conselhos sobre como escrever uma consulta que o otimizador pode otimizar. A documentação do Oracle também está online , e eu geralmente procuro informações atualizadas sobre o Oracle. Como não trabalhei com o SQLServer, não tenho recomendações.
Não tenho visto muitas novidades no campo da otimização de consultas nos últimos anos. A grande mudança é a descontinuação do otimizador baseado em regras, com o qual mal consigo me lembrar de trabalhar. No entanto, eu entendo que o SQLServer ainda usa um otimizador baseado em regras, portanto, entender suas regras pode ajudar.
Uma ferramenta na qual você pode editar uma consulta, executá-la e gerar um plano de explicação ajuda a entender quais alterações oferecem uma consulta com bom desempenho. Eu tive bons resultados com o AquaData Studio e realmente gosto da visualização em árvore. O desenvolvedor SQL deve fazer o mesmo.
Como em qualquer otimização, você precisa ter dados quantitativos sobre seu desempenho. Em seguida, você pode determinar se realmente o otimizou.
Como otimizar uma consulta depende, em parte, de como o analisador cria e otimiza a consulta. Em maior medida, depende da distribuição dos dados que você está consultando. Em um banco de dados Oracle, se o conjunto de resultados compõe quatro por cento ou mais de uma tabela e é distribuído aleatoriamente, uma varredura de tabela geralmente é mais rápida que um índice.
Eu trabalhei para otimizar consultas para uma equipe de desenvolvedores. Apenas duas ou três consultas por ano exigiam uma otimização séria. A maioria das consultas é simples o suficiente para não precisar de otimização. O restante geralmente pode ser tratado adicionando caminhos de junção ausentes.
Para o Oracle, existem três configurações ajustáveis que podem afetar significativamente o desempenho. O custo para pesquisas de índice e dados interage para alterar as condições sob as quais um índice no será ou não será usado. Esses dois podem ser ajustados por sessão. Os padrões geralmente não são ideais. O outro valor controla quantas alternativas o otimizador tentará. Aumentar esse valor geralmente ajuda.
A otimização é significativamente impactada pela distribuição e volume de dados. Ao otimizar, é melhor usar uma cópia do banco de dados de produção ou pelo menos um banco de dados com a mesma distribuição e volumes de dados. Eu quebrei severamente o ambiente de teste, otimizando uma consulta para o banco de dados de ordem de produção. Os bancos de dados de teste e desenvolvimento tinham distribuição de dados significativamente diferente, o que causava falha na consulta, mesmo com significativamente menos dados.