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?
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
Gracias. ¿Puedes explicarme qué es BYTES? – Victor
@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 –