Está en la página 1de 8

Optimización de

Consultas en
Oracle

E16: Diseño de Sistemas de UNIVERSITAT JAUME I 1


Bases de Datos

El comando EXPLAIN PLAN


• Almacena el plan de ejecución de una
consulta en una tabla previamente creada
con dicha función.
• El siguiente comando visualiza el plan de
ejecución de cada consulta que ejecutemos:
SET AUTOTRACE ON EXPLAIN;

• El comando SET TIMING ON; nos da el tiempo


de ejecución de cada consulta.
E16: Diseño de Sistemas de UNIVERSITAT JAUME I 2
Bases de Datos

1
Ejemplo
EXPLAIN PLAN FOR
SELECT ename, job, sal, dname
FROM emp, dept
WHERE emp.deptno = ept.deptno
AND NOT EXISTS
(SELECT * FROM salgrade
WHERE emp.sal BETWEEN losal AND hisal);

ID OPERATION OPTIONS OBJECT_NAME


0 SELECT STATEMENT
1 FILTER
2 NESTED LOOPS
3 TABLE ACCESS FULL EMP
4 TABLE ACCESS BY ROWID DEPT
5 INDEX UNIQUE SCAN PK_DEPTNO
6 TABLE ACCESS FULL SALGRADE

E16: Diseño de Sistemas de UNIVERSITAT JAUME I 3


Bases de Datos

E16: Diseño de Sistemas de UNIVERSITAT JAUME I 4


Bases de Datos

2
Optimización en Oracle

E16: Diseño de Sistemas de UNIVERSITAT JAUME I 5


Bases de Datos

Optimización Basada en Costes

E16: Diseño de Sistemas de UNIVERSITAT JAUME I 6


Bases de Datos

3
Transformación de Consultas
• Sustituye el operador IN por OR:
iva in (16,7) iva = 16 OR iva = 7
• Sustituye el operador OR por UNION ALL
• Sustituye BETWEEN por >= y <=
x between 1 and 100 x >= 1 and x<= 100
• Evalúa las fórmulas de constantes:
precio > 100 * 1.1 precio > 110
• Combina la consulta con las vistas y subconsultas que utiliza.
• Desplaza los predicados de la consulta para que se combinen
con las vistas y subconsultas.

E16: Diseño de Sistemas de UNIVERSITAT JAUME I 7


Bases de Datos

Optimización Basada en Reglas


•En este caso no se realiza la fase de estimación de costes.
• Se calcula un plan de ejecución en base a los posibles
caminos de acceso, o sea se escoge el plan más rápido de
ejecutar según un ranking de caminos de acceso.
•No tiene en cuenta el tamaño y distribución de los datos.
•Es sensible al orden de escritura de las condiciones en la
sentencia.
•Oracle lo considera obsoleto y anuncia su desaparición en
próximas versiones.

E16: Diseño de Sistemas de UNIVERSITAT JAUME I 8


Bases de Datos

4
Ranking de Caminos de Acceso
Path 1: Single Row by Rowid
Path 2: Single Row by Cluster Join
Path 3: Single Row by Hash Cluster Key with Unique or Primary Key
Path 4: Single Row by Unique or Primary Key
Path 5: Clustered Join
Path 6: Hash Cluster Key
Path 7: Indexed Cluster Key
Path 8: Composite Index
Path 9: Single-Column Indexes
Path 10: Bounded Range Search on Indexed Columns
Path 11: Unbounded Range Search on Indexed Columns
Path 12: Sort Merge Join
Path 13: MAX or MIN of Indexed Column
Path 14: ORDER BY on Indexed Column
Path 15: Full Table Scan

E16: Diseño de Sistemas de UNIVERSITAT JAUME I 9


Bases de Datos

Optimización Basada en Costes


• El optimizador calcula todos los planes de ejecución posibles y
se queda con el de menor coste, o uno lo suficiente bueno.
• Para estimar el coste se tiene en cuenta datos estadísticos del
sistema, y de las tablas e índices que intervienen.
•Previamente hay que cargar los datos estadísticos en el
diccionario de datos mediante el comando ANALIZE o con la
siguiente sentencia:
execute dbms_stats.gather_schema_stats(‘mi_esquema', method_pt=>'FOR
ALL COLUMNS SIZE AUTO');

• El coste estimado de un plan de ejecución tiene en cuenta, para


cada camino y operación a ejecutar, las operaciones de E/S, el
tiempo de CPU, y la memoria principal disponible.
E16: Diseño de Sistemas de UNIVERSITAT JAUME I 10
Bases de Datos

5
Estadísticas del Diccionario
Estadísticas de Tabla
• Número de filas
• Número de bloques
• Longitud media de las filas
Estadísticas de Columna
• Número de valores distintos
• Número de valores nulos
• Distribución de los datos (histogramas)
Estadísticas de Indices
• Número de bloques de hojas
• Número de niveles
• Factor de clustering
Estadísticas de Sistema
• Rendimiento y utilización de la CPU
• Rendimiento y utilización de E/S

E16: Diseño de Sistemas de UNIVERSITAT JAUME I 11


Bases de Datos

Caminos de Acceso a las Filas


Full Table Scans
Sample Table Scans
ROWID Scans Index Unique Scans
Index Scans Index Range Scans
Cluster Scans Index Range Scans Descending
Hash Scans Index Skip Scans
Full Scans
Fast Full Index Scans
Index Joins
Bitmap Joins

E16: Diseño de Sistemas de UNIVERSITAT JAUME I 12


Bases de Datos

6
Cálculo de Joins
Nested Loop Joins
Nested Loop Outer Joins
Hash Joins
Hash Join Outer Joins
Sort Merge Joins
Sort Merge Outer Joins
Cartesian Joins
Full Outer Joins

E16: Diseño de Sistemas de UNIVERSITAT JAUME I 13


Bases de Datos

Cálculo de Histogramas
• Sirven para determinar la selectividad de una condición sobre
una columna.
•Ayudan a decidir la utilización de un índice, o el orden de las
tablas en un join.
•Para generarlos hay que ejecutar el comando ANALIZE:
ANALYZE TABLE emp COMPUTE SATATISTICS FOR COLUMNS
sal SIZE 10;

• Histograma de una distribución lineal:

• Histograma de una distribución no lineal:

E16: Diseño de Sistemas de UNIVERSITAT JAUME I 14


Bases de Datos

7
Utilización de Hints
•Son instrucciones que se insertan en la consulta y que fuerzan
al optimizador a elegir un plan de ejecución que cumpla el hint.

SELECT /*+ full(p) index(c pk_clientes) */ c.nombre, p.nombre


FROM pueblos p, clientes c
WHERE c.codpue = p.codpue;

SELECT /*+ use_nl(c, p) */ c.nombre, p.nombre


FROM pueblos p, clientes c
WHERE c.codpue = p.codpue;

E16: Diseño de Sistemas de UNIVERSITAT JAUME I 15


Bases de Datos