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

Características ocultas en Oracle

"Los escaneos de tablas completas no siempre son malos. Los índices no siempre son buenos".

Un método de acceso basado en índices es menos eficiente para leer filas que un escaneo completo cuando se mide en términos de filas a las que se accede por unidad de trabajo (normalmente por lectura lógica). Sin embargo, muchas herramientas interpretarán un escaneo completo de la tabla como un signo de ineficiencia.

Tome un ejemplo en el que está leyendo unos cientos de facturas de una tabla de facturas y buscando un método de pago en una pequeña tabla de búsqueda. El uso de un índice para sondear la tabla de búsqueda de cada factura probablemente signifique tres o cuatro io lógicas por factura. Sin embargo, un escaneo completo de la tabla de búsqueda en preparación para una combinación hash de los datos de la factura probablemente requeriría solo un par de lecturas lógicas, y la combinación hash en sí misma se completaría en la memoria casi sin costo alguno.

Sin embargo, muchas herramientas verían esto y verían "escaneo completo de la tabla" y le dirían que intente usar un índice. Si lo hace, es posible que haya desafinado su código.

Por cierto, la dependencia excesiva de los índices, como en el ejemplo anterior, hace que aumente la "Proporción de aciertos de caché de búfer". Esta es la razón por la cual el BCHR es en su mayoría una tontería como predictor de la eficiencia del sistema.