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

¿Cómo se interpreta el plan de explicación de una consulta?

Me estremezco cada vez que veo comentarios de que los escaneos de tablas completos son malos y el acceso al índice es bueno. Los escaneos completos de tablas, escaneos de rangos de índices, escaneos rápidos de índices completos, bucles anidados, combinaciones de combinación, combinaciones hash, etc. son simplemente mecanismos de acceso que el analista debe comprender y combinar con un conocimiento de la estructura de la base de datos y el propósito de una consulta en para llegar a una conclusión significativa.

Un escaneo completo es simplemente la forma más eficiente de leer una gran proporción de los bloques de un segmento de datos (una tabla o una (sub)partición de tabla) y, aunque a menudo puede indicar un problema de rendimiento, eso es solo en el contexto. de si es un mecanismo eficiente para lograr los objetivos de la consulta. Hablando como un tipo de almacén de datos y BI, mi bandera de advertencia número uno para el rendimiento es un método de acceso basado en índice y un bucle anidado.

Entonces, para el mecanismo de cómo leer un plan de explicación, la documentación de Oracle es una buena guía:http://download.oracle.com/docs/cd/B28359_01/server.111/b28274/ex_plan.htm#PFGRF009

Lea también la Guía de ajuste de rendimiento.

También tenga un google para "retroalimentación de cardinalidad", una técnica en la que se puede usar un plan de explicación para comparar las estimaciones de cardinalidad en varias etapas en una consulta con las cardinalidades reales experimentadas durante la ejecución. Wolfgang Breitling es el autor del método, creo.

Entonces, en resumen:comprenda los mecanismos de acceso. Comprender la base de datos. Entender la intención de la consulta. Evita las reglas generales.