Escolar Documentos
Profissional Documentos
Cultura Documentos
Consultas
1
Otimizao de Consultas SQL
Em algumas linguagens de consulta, a estratgia
de execuo definida pela maneira como o
usurio (ou programador) expressa a consulta
Em SQL, que uma linguagem declarativa,
apenas os resultados desejados so
especificados
Portanto, a otimizao de consultas necessria
em SGBDs relacionais baseados em SQL
2
Traduo de Consultas SQL para
Expresses da AR
Consultas SQL so decompostas em blocos
Cada bloco transformado em uma expresso
da lgebra relacional
Os blocos so otimizados internamente, levando-
se em considerao a ordem de execuo entre
eles
Um bloco contm um nico comando SELECT-
FROM-WHERE, incluindo clusulas GROUP BY e
HAVING, se houver
3
Otimizao Baseada em Heursticas
Consultas so representadas internamente na forma de
uma rvore ou grafo
rvores de consulta so preferidas para a otimizao pois
determinam a ordem de execuo das operaes
Grafos de consulta indicam apenas as operaes e os respectivos
operandos envolvidos portanto, existe apenas um grafo
correspondente a cada consulta
Regras heursticas so usadas para alterar a representao
interna (rvore ou grafo) de uma consulta de modo a
otimizar a sua execuo
Por exemplo: operaes de projeo e seleo so aplicadas antes
de uma juno
O plano de execuo gerado determina a ordem em que
as operaes sero executadas e os recursos a serem
utilizados (por ex., ndices)
Introduo a Banco de Dados DCC 011
Exemplo Preliminar
Consulta Q2 (Cap. 5 e 8):
Para cada projeto localizado em Stafford, recupere o nmero do
projeto, o nmero do departamento responsvel e o ltimo nome, o
endereo e a data de nascimento do gerente do departamento.
Consulta SQL:
SELECT P.PNUMBER, P.DNUM, E.LNAME, E.ADDRESS, E.BDATE
FROM PROJECT AS P, DEPARTMENT AS D, EMPLOYEE AS E
WHERE P.DNUM=D.DNUMBER AND D.MGRSSN=E.SSN AND
P.PLOCATION=STAFFORD;
lgebra Relacional:
PNUMBER, DNUM, LNAME, ADDRESS, BDATE (((
PLOCATION=STAFFORD(PROJECT))
DNUM=DNUMBER (DEPARTMENT)) MGRSSN=SSN (EMPLOYEE))
4
rvore de Consulta
rvore Cannica
5
Otimizao Heurstica
Parte de uma rvore cannica, obviamente
ineficiente, mas fcil de ser construda
No exemplo anterior, considerando-se que
P tem 100 tuplas de 100 bytes
D tem 20 tuplas de 50 bytes
E tem 5000 tuplas de 150 bytes
os produtos cartesianos resultariam em 10 milhes
de tuplas de 300 bytes cada
Transformaes a partir da rvore cannica usam
regras de equivalncia entre expresses da lgebra
relacional para melhorar progressivamente o plano
de execuo da consulta
Introduo a Banco de Dados DCC 011
Exemplo
Consulta SQL:
SELECT LNAME
FROM EMPLOYEE, WORKS_ON, PROJECT
WHERE PNAME = AQUARIUS AND PNUMBER=PNO AND
ESSN=SSN AND BDATE > DEC-31-1957;
6
Exemplo: etapa 1
A rvore cannica
construda
diretamente a
partir da consulta
SQL
Exemplo: etapa 2
A condio de seleo
desmembrada e as duas
operaes de seleo
(sobre BDATE e PNAME)
so aplicadas antes dos
produtos cartesianos,
para reduzir o nmero
de tuplas resultantes
7
Exemplo: etapa 3
Exemplo: etapa 4
Produtos cartesianos
seguidos de seleo
so substitudos por
junes
8
Exemplo: etapa 5
A cada passo, so
mantidas apenas os
atributos necessrios
(operaes de projeo
so deslocadas para
baixo)
Regras de Transformao
9
Regras de Transformao (cont.)
R5. Comutatividade da juno e do produto
cartesiano
RS=SR R S=S R
R6. Comutatividade da seleo e juno ou
produto cartesiano ( = { , })
<cond>(R S) = (<cond>(R)) S
R7. Comutatividade da projeo e juno ou
produto cartesiano ( = { , })
<lista>(R S) = (<listaR>(R)) (<listaS>(S))
R8. Comutatividade da unio e da interseo
RS=SR RS=SR
10
Passos para Otimizao de uma
rvore Cannica do Tipo SPJ
1. Usando a regra R1, desmembre a condio (conjuntiva)
da operao de seleo.
2. Usando as regras R2 e R6, reposicione as condies de
seleo e juno de forma que elas possam ser aplicadas
o mais cedo possvel.
3. Usando as regras R5 e R9, reposicione as relaes de
forma que condies de seleo mais restritivas possam
ser aplicadas mais cedo.
4. Usando a regra R12, converta as sequncias de
operaes de seleo e produto cartesiano em junes.
5. Usando as regras R3, R4 e R7, desmembre a lista de
atributos da operao de projeo de forma que
operaes de projeo especficas possam ser
executadas mais cedo.
Introduo a Banco de Dados DCC 011
Exerccio
Seja o banco de dados de uma livraria representado pelo seguinte esquema relacional:
Editora(CodEditora,NomeEditora)
Livro(CodLivro,Titulo,Autor,Assunto,AnoPub,CodEditora)
Instituicao(CodInst,NomeInst,Sigla,Local)
Adotado-por(CodLivro,CodInst,AnoAdocao)
11