2012-09-13 35 views
5

he escrito una consulta SQL de Oracle complejo y el explicar las estadísticas del plan se ven así: Coste: 209.201 Bytes: 187944150 cardinalidad: 409.675Oracle explicar el plan: Cardinalidad devuelve un número enorme, pero la consulta no devuelve ningún registro

Ahora el DBA afinó la consulta y las estadísticas se ven así: Costo: 42.996 Bytes: 89.874.138 Cardinalidad: 209.226

Mi primera pregunta es, si los números son más bajos, ¿significa automáticamente un mejor rendimiento? ¿Qué número es el más pertinente? ¿Costo/Cardinalidad/Bytes? Mi segunda pregunta es: entiendo que la cardinalidad es el número de filas leídas. Pero cuando ejecuto la consulta, ¡devuelve '0' filas! Mi impresión fue que Cardinality tiene que ser el mismo para dos consultas que se supone que devuelven los mismos conjuntos de resultados. ¿Esto creo que está mal?

+0

Cardinality es (simplemente ponga) el número de filas que el optimizador _thinks_ necesitará; dependiendo de muchos factores, incluido el nivel de las estadísticas, podría ser incorrecto. – Ben

+0

Gracias. ¿Puedes explicarme qué es BYTES? – Victor

+1

@Kaushik: A partir de la documentación, 'BYTES' es" Estimar por el enfoque de optimización de consultas la cantidad de bytes a los que accede la operación ". Pero eso es engañoso, realmente es la cantidad de bytes * devueltos * por la operación. Por ejemplo, si tiene un escaneo de tabla completo, leerá cada byte en la tabla, pero 'BYTES' es la estimación del tamaño * después * de cualquier filtro. http://docs.oracle.com/cd/E11882_01/server.112/e16638/ex_plan.htm#r22c1-t12 –

Respuesta

3

Costo, bytes, cardinalidad ... todas son estimaciones de acuerdo con las entradas como las estadísticas dadas al optimizador. Entonces, automáticamente no significan nada, pero pueden dar una idea. En las palabras de la Guía de ajuste de rendimiento de Oracle "Lo mejor es utilizar PLAN EXPLICACIÓN para determinar un plan de acceso y luego probar que es el plan óptimo mediante pruebas. Al evaluar un plan, examine el consumo real de recursos de la declaración".

Para la 2da pregunta: Las consultas teóricamente equivalentes deben devolver la misma cardinalidad. Las estadísticas de sus tablas pueden ser antiguas.

Cuestiones relacionadas