Como está buscando información específica de Oracle, recomendaría el blog Ask Tom en Oracle. En general, creo que encontrará que el consejo es no ajustar la consulta. Obtendrá buenos consejos sobre cómo escribir una consulta que el optimizador puede optimizar. La documentación de Oracle también está en línea , y generalmente busco información actualizada sobre Oracle. No he trabajado con SQLServer, así que no tengo ninguna recomendación para ello.
No he visto muchas novedades en el campo de la optimización de consultas en los últimos años. El gran cambio es la desaprobación del optimizador basado en reglas, con el que apenas recuerdo haber trabajado. Sin embargo, entiendo que SQLServer todavía utiliza un optimizador basado en reglas, por lo que comprender sus reglas puede ayudar.
Una herramienta en la que puede editar una consulta, ejecutarla y generar un plan de explicación ayuda a comprender qué cambios le dan una consulta que funciona bien. He tenido buenos resultados con AquaData Studio, y realmente me gusta su vista de árbol. El desarrollador SQL también debería hacerlo.
Al igual que con cualquier optimización, debe tener datos cuantitativos sobre su rendimiento. Luego puede determinar si realmente lo optimizó.
Cómo optimizar una consulta depende en parte de cómo el analizador construye y optimiza la consulta. En mayor medida, depende de la distribución de los datos que está consultando. En una base de datos Oracle, si el conjunto de resultados constituye el cuatro por ciento o más de una tabla y se distribuye aleatoriamente, un escaneo de tabla suele ser más rápido que un índice.
He trabajado para optimizar las consultas de un equipo de desarrolladores. Solo dos o tres consultas al año requieren una optimización seria. La mayoría de las consultas son lo suficientemente simples como para no necesitar optimización. El resto generalmente podría manejarse agregando rutas de unión faltantes.
Para Oracle hay tres configuraciones ajustables que pueden afectar significativamente el rendimiento. Los costos de las búsquedas de índice y datos interactúan para cambiar las condiciones bajo las cuales se utilizará o no un índice in. Estos dos pueden ajustarse por sesión. Los valores predeterminados a menudo no son óptimos. El otro valor controla cuántas alternativas intentará el optimizador. Aumentar este valor a menudo ayuda.
La optimización se ve significativamente afectada por la distribución de datos y el volumen. Al optimizarlo, es mejor usar una copia de la base de datos de producción, o al menos una base de datos con la misma distribución de datos y volúmenes. He roto gravemente el entorno de prueba, optimizando una consulta para la base de datos de órdenes de producción. Las bases de datos de prueba y desarrollo tenían una distribución de datos significativamente diferente, lo que hizo que la consulta fallara incluso con significativamente menos datos.