sql >> Base de Datos >  >> RDS >> Oracle

Optimizador de sql para tablas grandes de Db

Probablemente debería comenzar con EXPLICAR PLAN .

Luego edite su pregunta y publique la instrucción SQL y el resultado de EXPLAIN PLAN.

Más tarde. . .

No te voy a ayudar mucho con esa consulta. 269 ​​líneas, al menos 29 SELECT, consultas paralelas, bases de datos remotas, uniones externas (estilo antiguo), etc.

El mejor consejo que puedo darte es

  • obtener más información de EXPLAIN PLAN, y
  • simplificar el problema.

La tabla de planes tiene más columnas de las que comúnmente se publican. Las columnas COSTO, CARDINALIDAD, BYTES y TIEMPO pueden ser útiles para priorizar su esfuerzo de ajuste.

Tienes 10 escaneos completos de tablas en esa consulta. ("TABLE ACCESS FULL" en el plan de consulta). Eso suele ser una mala señal; los escaneos completos de la tabla a menudo tardan un tiempo relativamente largo en ejecutarse. No es siempre una mala señal Una exploración completa de una tabla pequeña puede ser más rápida que una exploración de índice.

Comience por obtener el resultado de EXPLAIN PLAN para cada una de las 29 declaraciones SELECT en su consulta. Si alguno de ellos muestra un escaneo completo de la tabla, probablemente pueda mejorar su rendimiento con índices adecuados . (Oracle admite muchos tipos diferentes de índices. No pase por alto las oportunidades para los índices de varias columnas). En cualquier caso, la salida de EXPLAIN PLAN lo ayudará a identificar el más lento de los 29 SELECT.