Você está na página 1de 9

Custo de Execução de Queries

Oracle
Administração de Bases de Dados
Universidade de Évora

Carlos Pampulim Caldeira


http://www.di.uevora.pt/~ccaldeira
O que fazer?
1. SQL> DESC plan_table;
2. Correr o script utlxplan.sql
Plan_table
Explain plan
EXPLAIN PLAN SET STATEMENT_ID =
'DEPARTAMENTO' FOR
SELECT * FROM "Departamento";
Explained
Script para ler plan_table
UNDEFINE v_statement_id;

SELECT
id ||
DECODE(id, 0, '', LPAD(' ', 2*(level - 1))) || ' ' ||
operation || ' ' ||
options || ' ' ||
object_name || ' ' ||
object_type || ' ' ||
DECODE(cost, NULL, '', 'Cost = ' || position)
AS “Plano de Execução”
FROM plan_table
CONNECT BY PRIOR id = parent_id
AND statement_id = '&&v_statement_id'
START WITH id = 0
AND statement_id = '&v_statement_id';
Ordem das operações
A ordem das operações é a seguinte:
• A mais chegada à direita é a primeira a ser
executada, seguida pelas operações em cima;
• Nas operações com mesma posição, a
primeira a ser executada é a de topo, seguida
pelas operações em cima.
Ordem das operações
0 SELECT STATEMENT Cost = 6
1 MERGE JOIN Cost = 1
2 TABLE ACCESS BY INDEX ROWID PRODUCT_TYPES TABLE Cost = 1
3 INDEX FULL SCAN PRODUCT_TYPES_PK INDEX (UNIQUE) Cost = 1
4 SORT JOIN Cost = 2
5 TABLE ACCESS FULL PRODUCTS TABLE Cost = 1

Ordem de execução: 3, 2, 5, 4, 1 e 0.
Comparação de planos de execução
0 SELECT STATEMENT Cost = 4
………
versus
0 SELECT STATEMENT Cost = 5
………
Sumário
• O tuning é o mecanismo que permite
aumentar a performance do SQL;

• O optimizador relacional é o subsistema de


um SGBDR que gera planos de execução.

Você também pode gostar