processamento de consultas - instituto de computaçãosantanch/teaching/db/2013-2/... · 2013. 9....
TRANSCRIPT
![Page 1: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/1.jpg)
Processamento de Consultas
Banco de Dados: Teoria e Prática
André Santanchè e Luiz Celso Gomes JrInstituto de Computação – UNICAMP
Setembro 2013
Pic
ture
by
htt
p:/
/ww
w.f
lickr
.co
m/p
ho
tos/
fdec
om
ite/
1457
4935
36/
![Page 2: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/2.jpg)
Execução de Consulta
–Passos Típicos
(Elmasri, 2010)
Consulta em linguagem de alto nível
Análise Léxica,Análise Sintática
e Validação
Forma intermediária de consulta
Gerador de códigode consulta
Otimizadorde Consulta
Plano de execução
Código para executar a consulta
Processador emtempo de execuçãodo banco de dados
Resultado da consulta
![Page 3: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/3.jpg)
Execução de Consulta
–Passos Típicos
Consulta em linguagem de alto nível
Análise Léxica,Análise Sintática
e Validação
Forma intermediária de consulta
Gerador de códigode consulta
Otimizadorde Consulta
Plano de execução
Código para executar a consulta
Processador emtempo de execuçãodo banco de dados
Resultado da consulta
![Page 4: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/4.jpg)
Análise e Validação
▪ Análise e Validação
▫ Análise léxica
▫ Análise sintática
▫ Validação
▪ Representações internas:
▫ árvore de consulta
▫ grafo de consulta
Consulta em linguagem de alto nível
Análise Léxica,Análise Sintática
e Validação
Forma intermediária de consulta
Gerador de códigode consulta
Otimizadorde Consulta
Plano de execução
Código para executar a consulta
Processador emtempo de execuçãodo banco de dados
Resultado da consulta
![Page 5: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/5.jpg)
Estratégia de Execução
▪ Consulta possui muitas estratégias de execução possíveis
▪ Planejamento da Estratégia de Execução
▫ Otimização processo de →escolha da estratégia adequada (razoavelmente eficiente)
Consulta em linguagem de alto nível
Análise Léxica,Análise Sintática
e Validação
Forma intermediária de consulta
Gerador de códigode consulta
Otimizadorde Consulta
Plano de execução
Código para executar a consulta
Processador emtempo de execuçãodo banco de dados
Resultado da consulta
![Page 6: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/6.jpg)
Código da Consulta
▪ Pode ser:
▫ Executado diretamente
◦ modo interpretado
▫ Armazenado e executado quando necessário
◦ modo compilado
Consulta em linguagem de alto nível
Análise Léxica,Análise Sintática
e Validação
Forma intermediária de consulta
Gerador de códigode consulta
Otimizadorde Consulta
Plano de execução
Código para executar a consulta
Processador emtempo de execuçãodo banco de dados
Resultado da consulta
![Page 7: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/7.jpg)
Execução do Código
▪ Processador executa código da consulta
▪ Produz resultado da execução
Consulta em linguagem de alto nível
Análise Léxica,Análise Sintática
e Validação
Forma intermediária de consulta
Gerador de códigode consulta
Otimizadorde Consulta
Plano de execução
Código para executar a consulta
Processador emtempo de execuçãodo banco de dados
Resultado da consulta
![Page 8: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/8.jpg)
Ênfase desta aula:Otimização de Consultas
![Page 9: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/9.jpg)
Consultas Declarativas
▪ “O quê” ao invés de “Como”
▪ Otimização de consulta
▫ Solução razoavelmente eficiente (Elmasri, 2011)
▫ Solução ótima pode ser muito custosa
![Page 10: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/10.jpg)
Consulta SQL emÁlgebra Relacional
▪ Consulta SQL Álgebra Relacional Estendida→▫ Inclui operadores como COUNT, SUM e MAX
▪ Consulta SQL decomposta em blocos
▫ Bloco de Consulta ou Bloco Simples:
◦ Contém uma única expressão SELECT-FROM-WHERE (GROUP BY e HAVING se houver)
◦ Sem aninhamento
▫ Consultas aninhadas são identificadas como consultas independentes
![Page 11: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/11.jpg)
Decomposição em Blocos
Exemplo
▪ TabelaPessoa(Codigo, Nome, Telefone, AnoFiliacao)
▪ Nome dos filiados mais antigos:SELECT Codigo, NomeFROM PESSOAWHERE AnoFiliacao = (SELECT MIN(AnoFiliacao)) FROM PESSOA)
▪ BlocosSELECT Codigo, NomeFROM PESSOAWHERE AnoFiliacao = (referência )
SELECT MIN(AnoFiliacao))FROM PESSOA
![Page 12: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/12.jpg)
Algoritmos para Operações
![Page 13: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/13.jpg)
Ordenação Externa
![Page 14: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/14.jpg)
38 27 43 3 9 82 10
38 27 43 3 9 82 10
38 27 43 3 9 82 10
38 27 43 3 9 82
27 38 3 43 9 82
10
10
3 27 38 43 9 10 82
3 9 10 27 38 43 82
Merge Sort Tradicional
![Page 15: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/15.jpg)
Ordenação Externa
![Page 16: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/16.jpg)
5 , 9 7 , 2 8 , 4 1 , 6 3 , 6 9 , 1 5 entrada
Entrada organizada em páginas de tamanhos iguais:● 13 blocos de disco (bd)● 3 blocos de memória (bm)
ExemploInspirado
em(Ramakrishnan, 2013)
![Page 17: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/17.jpg)
5 , 9 7 , 2 8 , 4 1 , 6 3 , 6 9 , 1 5 entrada
5 , 9 2 , 7 4 , 8 1 , 6 3 , 6 1 , 9 5passo 0
ordenação
Passo inicial de ordenação de páginas em memória:● pode ser usado qualquer algoritmo (e.g., quick sort)● 13 leituras e 13 gravações de bloco (bd*2 transferências)
![Page 18: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/18.jpg)
5 , 9 7 , 2 8 , 4 1 , 6 3 , 6 9 , 1 5 entrada
5 , 9 2 , 7 4 , 8 1 , 6 3 , 6 1 , 9 5passo 0
ordenação
2 , 5
7 , 9
1 , 4
6 , 8
1 , 3
6 , 9
5passo 1merge
Primeiro merge:● 3 blocos de memória (bm)● 13 leituras e 13 gravações de bloco (bd*2 transferências)
![Page 19: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/19.jpg)
5 , 9 7 , 2 8 , 4 1 , 6 3 , 6 9 , 1 5 entrada
5 , 9 2 , 7 4 , 8 1 , 6 3 , 6 1 , 9 5passo 0
ordenação
2 , 5
7 , 9
1 , 4
6 , 8
1 , 3
6 , 9
5
1 , 2
4 , 5
6 , 7
8 , 9
1 , 3
5 , 6
9
passo 1merge
passo 2merge
Segundo merge:● 3 blocos de memória (bm)● 13 leituras e 13 gravações de bloco (bd*2 transferências)
![Page 20: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/20.jpg)
5 , 9 7 , 2 8 , 4 1 , 6 3 , 6 9 , 1 5 entrada
5 , 9 2 , 7 4 , 8 1 , 6 3 , 6 1 , 9 5passo 0
ordenação
2 , 5
7 , 9
1 , 4
6 , 8
1 , 3
6 , 9
5
1 , 2
4 , 5
6 , 7
8 , 9
1 , 3
5 , 6
9
1 , 1
2 , 3
4 , 5
5 , 6
6 , 7
8 , 9
9
passo 1merge
passo 2merge
passo 3merge
Terceiro merge:● 3 bms● bd*2 transferências
![Page 21: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/21.jpg)
Ordenação ExternaNúmeros
▪ bd – blocos em disco
▪ bm – blocos de memória
▫ bme – blocos de entrada = bm - 1
▫ bms – blocos de saída = 1
![Page 22: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/22.jpg)
Ordenação ExternaNúmeros
▪ Ordenação – passo 0
▫ 2*bd = 2*13 = 26 transferências (leitura e gravação)
▪ Merge
▫ 2*bd = 2*13 = 26 transferências a cada estágio
▪ Rodadas por nível
▫ rodadas = bd/bme = 13/2 = 8
▪ Níveis
▫ log2rodadas+1 = log
28+1 = 4 níveis
▪ Custo: 2*bd * (log2rodadas+1)
![Page 23: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/23.jpg)
Como Otimizar?
![Page 24: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/24.jpg)
Se eu tiver 5 blocos de memória?
![Page 25: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/25.jpg)
5 , 9 7 , 2 8 , 4 1 , 6 3 , 6 9 , 1 5 entrada
passo 0ordenação
2 , 5
7 , 9
1 , 4
6 , 8
1 , 3
6 , 9
5
1 , 1
2 , 3
4 , 5
5 , 6
6 , 7
8 , 9
9
passo 1merge
![Page 26: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/26.jpg)
Ordenação ExternaNúmeros
▪ Ordenação – passo 0
▫ 2*bd = 2*13 = 26 transferências (leitura e gravação)
▪ Merge
▫ 2*bd = 2*13 = 26 transferências a cada estágio
▪ Rodadas por nível
▫ rodadas = bd/bme = 13/4 = 4
▪ Rodadas (níveis)
▫ logbme
rodadas+1 = log44+1 = 2 rodadas
▪ Custo: 2*bd * (logbme
rodadas+1)
![Page 27: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/27.jpg)
Seleção
![Page 28: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/28.jpg)
Esquema Conceitual – ExemploTáxis
Este é um subconjunto do Estudo de Caso proposto “Despacho e controle de Táxis via terminais móveis ligados on-line com um sistema multi-usuário” por prof. Geovane Cayres Magalhães
Cliente TaxiCorrida1 N N 1
CliIdNome
DataPedido PlacaMarcaModeloAnoFab
![Page 29: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/29.jpg)
Tabelas para exemplo - Táxis
Placa Marca Modelo AnoFab DAE6534 Ford Fiesta 1999 DKL4598 Wolksvagen Gol 2001 DKL7878 Ford Fiesta 2001 JDM8776 Wolksvagen Santana 2002 JJM3692 Chevrolet Corsa 1999
Táxi (TX)
ClId Placa DataPedido 1755 DAE6534 15/02/2003 1982 JDM8776 18/02/2003
Corrida (R1)
![Page 30: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/30.jpg)
Seleção?
Placa Marca Modelo AnoFab DAE6534 Ford Fiesta 1999 DKL4598 Wolksvagen Gol 2001 DKL7878 Ford Fiesta 2001 JDM8776 Wolksvagen Santana 2002 JJM3692 Chevrolet Corsa 1999
Placa='JDM8776'(TX)
![Page 31: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/31.jpg)
Exatamente IgualChave Primária
Placa Marca Modelo AnoFab DAE6534 Ford Fiesta 1999 DKL4598 Wolksvagen Gol 2001 DKL7878 Ford Fiesta 2001 JDM8776 Wolksvagen Santana 2002 JJM3692 Chevrolet Corsa 1999
Placa='JDM8776'(TX)
![Page 32: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/32.jpg)
AnoFab=2002(TX)
Exatamente IgualOutra Chave
Placa Marca Modelo AnoFab DAE6534 Ford Fiesta 1999 DKL4598 Wolksvagen Gol 2001 DKL7878 Ford Fiesta 2001 JDM8776 Wolksvagen Santana 2002 JJM3692 Chevrolet Corsa 1999
![Page 33: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/33.jpg)
AnoFab=2002(TX)
Seleção?
Placa Marca Modelo AnoFab DAE6534 Ford Fiesta 1999 DKL4598 Wolksvagen Gol 2001 DKL7878 Ford Fiesta 2001 JDM8776 Wolksvagen Santana 2002 JJM3692 Chevrolet Corsa 1999
![Page 34: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/34.jpg)
AnoFab>2000(TX)
Seleção?
Placa Marca Modelo AnoFab DAE6534 Ford Fiesta 1999 DKL4598 Wolksvagen Gol 2001 DKL7878 Ford Fiesta 2001 JDM8776 Wolksvagen Santana 2002 JJM3692 Chevrolet Corsa 1999
![Page 35: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/35.jpg)
AnoFab>2000(TX)
Faixa (>, <, >=, <=)
Placa Marca Modelo AnoFab DAE6534 Ford Fiesta 1999 DKL4598 Wolksvagen Gol 2001 DKL7878 Ford Fiesta 2001 JDM8776 Wolksvagen Santana 2002 JJM3692 Chevrolet Corsa 1999
![Page 36: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/36.jpg)
Algoritmos de Seleção
▪ Exatamente igual
▫ chave primária
▫ outra chave
▪ >, <, >=, <=
▪ compostos
![Page 37: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/37.jpg)
Algoritmos de Seleção
▪ Pesquisa linear
▪ Pesquisa binária
▪ Usando índice primário
▪ Usando chave hash
▪ Combinado com o índice primário
▪ Usando índice de agrupamento
▪ Usando índice secundário
![Page 38: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/38.jpg)
Seleção Conjuntiva x Dijuntiva
▪ seleção conjuntiva - e.g., and
▪ seleção dijuntiva - e.g., or
![Page 39: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/39.jpg)
Algoritmos de Seleção Conjuntiva
▪ Índice para uma das condições
▪ Índice composto envolvendo ambas as condições
▪ Índice individual para cada condição
![Page 40: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/40.jpg)
Seletividade
▪ seletividade: valor entre 0 e 1
▪ n registros
▪ igualdade atributo único
▫ seletividade: 1/n
![Page 41: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/41.jpg)
SeletividadeAtributo Não Único
▪ i valores
▪ i igualmente distribuído
▪ registros por valor?
▪ seletividade?
![Page 42: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/42.jpg)
SeletividadeAtributo Não Único
▪ i valores
▪ i igualmente distribuído
▪ n/i registros por valor
▪ seletividade: 1/i
![Page 43: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/43.jpg)
SeletividadeAtributo Não Único
▪ primeiro as condições com valor menor de seletividade
![Page 44: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/44.jpg)
Exercício 1
▪ Considere a execução de uma consulta envolvendo uma seleção em um atributo que possui um índice. É sempre mais eficiente usar o índice do atributo no processamento?
![Page 45: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/45.jpg)
Junção(Join)
![Page 46: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/46.jpg)
Junção (Join) de Loop Aninhado
for each ti
for each tj
if match(ti, tj)
add-result(ti, tj)
![Page 47: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/47.jpg)
Junção de Loop AninhadoNúmeros
▪ ni - número de tuplas ti
▪ nj - número de tuplas tj
▪ pares de tuplas? (comparações?)
![Page 48: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/48.jpg)
Junção de Loop AninhadoNúmeros
▪ ni - número de tuplas ti
▪ nj - número de tuplas tj
▪ ni*nj - pares de tuplas
![Page 49: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/49.jpg)
Junção de Loop AninhadoNúmeros
▪ ni - número de tuplas ti
▪ nj - número de tuplas tj
▪ ni*nj - pares de tuplas
▪ bi - bloco de tuplas ti
▪ bj - bloco de tuplas tj
▪ leituras de blocos?
![Page 50: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/50.jpg)
Junção de Loop AninhadoNúmeros
▪ ni - número de tuplas ti
▪ nj - número de tuplas tj
▪ ni*nj - pares de tuplas
▪ bi - bloco de tuplas ti
▪ bj - bloco de tuplas tj
▪ bi + bj*ni leituras de blocos
![Page 51: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/51.jpg)
Junção de Loop AninhadoNúmeros
▪ Situações:
▫ Quantas transferências de bloco se todos os blocos estiverem na memória?
▫ Quantas transferências se os blocos de um dos loops estiver todo na memória e qual deles escolher (bi ou bj)
![Page 52: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/52.jpg)
Junção de Loop AninhadoNúmeros
▪ Situações:
▫ Quantas transferências de bloco se todos os blocos estiverem na memória?
◦ bi + bj transferências
▫ Quantas transferências se os blocos de um dos loops estiver todo na memória e qual deles escolher (bi ou bj)?
◦ escolher bj
◦ bi + bj transferências
![Page 53: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/53.jpg)
Junção de Loop Aninhado em Bloco
for each bi
for each bj
for each ti in bi
for each tj in bj
if match(ti, tj)
add-result(ti, tj)
![Page 54: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/54.jpg)
Junção de Loop Aninhado em BlocoNúmeros
▪ bi - bloco de tuplas ti
▪ bj - bloco de tuplas tj
▪ leituras de blocos?
![Page 55: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/55.jpg)
Junção de Loop Aninhado em BlocoNúmeros
▪ bi - bloco de tuplas ti
▪ bj - bloco de tuplas tj
▪ bi + bj*bi leituras de blocos
![Page 56: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/56.jpg)
Exercício 2
▪ Considere as seguintes tabelas e consulta:
▫ Aluno(ra, nome, id_dept)
▫ Departamento(id_dept, nome_dept)
▫ SELECT ra, nome, nome_deptFROM Aluno, DepartamentoWHERE Aluno.id_dept = Departamento.id_dept
▪ Escreva o pseudo-código para o processamento do join na consulta acima.
a) Considere que todas as tabelas cabem na memória.
b) Considere que apenas a tabela Departamento cabe na memória.
![Page 57: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/57.jpg)
Outras Junções
▪ Junção Indexada
▪ Junção Merge
▪ Junção Hash
![Page 58: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/58.jpg)
Projeção
▪ Recorte dos campos
▪ (?)
![Page 59: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/59.jpg)
Projeção
▪ Recorte dos campos
▪ Registros sem duplicatas
▫ SQL padrão não eliminar duplicatas→◦ DISTINCT elimina duplicatas→
▫ Registros com garantia de ser únicos
◦ e.g., contendo chave primária
▫ Registros sem garantia de ser únicos
◦ ordenação
◦ hashing
![Page 60: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/60.jpg)
Otimização de Consulta
![Page 61: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/61.jpg)
SQL p/ Álgebra
▪ Versão SQLSELECT Codigo, NomeFROM PESSOAWHERE AnoFiliacao = 1990
▪ Versão em álgebra
Codigo,Nome
(AnoFiliacao=1990
(PESSOA))
▪ Versão Árvore
PESSOA
Codigo,Nome
AnoFiliacao=1990
![Page 62: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/62.jpg)
Combinação de Operações usando Pipelining
▪ Uma consulta é mapeada em uma sequência de operações
▪ A execução de cada operação produz um resultado temporário
▪ Alternativa
▫ Evitar ao máximo resultados temporários
▫ Pipelining◦ concatena operações
◦ conforme uma saída é produzida gera entrada para a operação subsequente
![Page 63: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/63.jpg)
exemplo: Java Writer
Pipelining
Pattern Pipe & Filter
![Page 64: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/64.jpg)
Exemplo de Pipeline
Codigo Nome Telefone AnoFiliacao
1525 Asdrúbal 5432-1098 1990
1637 Doriana 9876-5432 1983
1701 Quincas 8765-4321 1985
2042 Melissa 7654-3210 1990
2111 Horácio 6543-2109 1983
PESSOA
PESSOA
![Page 65: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/65.jpg)
Exemplo de Pipeline
Codigo Nome Telefone AnoFiliacao
1525 Asdrúbal 5432-1098 1990
1637 Doriana 9876-5432 1983
1701 Quincas 8765-4321 1985
2042 Melissa 7654-3210 1990
2111 Horácio 6543-2109 1983
PESSOA
AnoFiliacao=1990
PESSOA
![Page 66: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/66.jpg)
Exemplo de Pipeline
PESSOACodigo Nome Telefone AnoFiliacao
1525 Asdrúbal 5432-1098 1990
2042 Melissa 7654-3210 1990AnoFiliacao=1990
PESSOA
![Page 67: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/67.jpg)
Exemplo de Pipeline
Codigo,Nome
AnoFiliacao=1990
Codigo Nome Telefone AnoFiliacao
1525 Asdrúbal 5432-1098 1990
2042 Melissa 7654-3210 1990
PESSOA
PESSOA
![Page 68: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/68.jpg)
Exemplo de Pipeline
Codigo,Nome
AnoFiliacao=1990
Codigo Nome
1525 Asdrúbal
2042 Melissa
PESSOA
PESSOA
![Page 69: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/69.jpg)
Árvore de Consulta
PESSOA
Codigo,Nome
AnoFiliacao=1990
folha: relação de entrada
fluxo
![Page 70: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/70.jpg)
Heurísticas para Otimização de Consulta
(Elmasri, 2011)
![Page 71: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/71.jpg)
Heurísticas para Otimização de Consulta
▪ Título dos livros sobre poesia escritos depois de 1996
SELECT LIVRO.TituloFROM LIVRO, PERTENCE, CATEGORIAWHERE CATEGORIA.Nome = “poesia” AND LIVRO.ISBN = PERTENCE.ISBN AND CATEGORIA.Codigo = PERTENCE.CodCategoria AND LIVRO.Ano > 1996
![Page 72: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/72.jpg)
Heurística para Otimização de Consulta
LIVRO PERTENCE
CATEGORIAX
X
CATEGORIA.Nome=“poesia” AND LIVRO.ISBN=PERTENCE.ISBN AND
CATEGORIA.Codigo=PERTENCE.CodCategoria AND LIVRO.Ano>1996
LIVRO.Titulo
![Page 73: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/73.jpg)
Regras de Transformação
1.Operações seleção conjuntivas podem se converter em cascatas de seleção
2.Operação de seleção é comutativa
3.Comutação de seleção com projeção
▫ caso o resultado da projeção tenha atributos requeridos pela seleção
![Page 74: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/74.jpg)
Regras de Transformação
4.Seleção e junção (ou produto cartesiano) são comutativas
▫ se atributos da seleção são de apenas uma das relações
5.Operações de união e interseção são comutativas
▫ diferença não é
![Page 75: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/75.jpg)
Regras de Transformação
6.Seleção é comutativa com operações de conjunto (união, interseção e diferença)
▫ sel (A @ B) equivale sel(A) @ sel(B)
![Page 76: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/76.jpg)
Heurísticas
▪ Quebrar operações de seleção conjuntivas (1)
▫ maior liberdade
▪ Mover seleção em direção às folhas (2), (3), (4), (5) e (6)
▫ apenas 1 tabela acima da tabela→
▫ duas tabelas acima da junção→
![Page 77: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/77.jpg)
Quebrando e Descendo Seleções
LIVRO
PERTENCE
CATEGORIAX
X
CATEGORIA.Codigo=PERTENCE.CodCategoria
LIVRO.Titulo
LIVRO.Ano>1996
LIVRO.ISBN=PERTENCE.ISBN
CATEGORIA.Nome=“poesia”
![Page 78: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/78.jpg)
Regras de Transformação
7.As operações de junção e produto cartesiano são comutativas
8.As operações de junção, produto cartesiano, união e interseção são associativas
![Page 79: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/79.jpg)
Heurística
▪ Operações de seleção mais restritivas devem ser executadas primeiro (5) e (6)
![Page 80: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/80.jpg)
Troca de Categoria com Livro
LIVRO
PERTENCE
CATEGORIA
X
X
CATEGORIA.Codigo=PERTENCE.CodCategoria
LIVRO.Titulo
LIVRO.Ano>1996
LIVRO.ISBN=PERTENCE.ISBN
CATEGORIA.Nome=“poesia”
![Page 81: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/81.jpg)
Regra de Transformação
9.Operações de produto cartesiano + seleção podem se converter em junção
![Page 82: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/82.jpg)
Heurística
▪ Converta produtos cartesianos + seleções em junções
![Page 83: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/83.jpg)
Produto Cartesiano + Seleção = Junção
LIVROPERTENCE
CATEGORIA
CATEGORIA.Codigo=PERTENCE.CodCategoria
LIVRO.Titulo
LIVRO.Ano>1996
LIVRO.ISBN=PERTENCE.ISBN
CATEGORIA.Nome=“poesia”
![Page 84: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/84.jpg)
Regras de Transformação
10.Cascata de projeções podem ser ignoradas e convertidas na última
▫ Pr1(Pr2(Pr3(A))) equivale Pr1(A)
11.Operações de projeção e união são comutativas
▫ proj (A U B) equivale proj(A) U proj(B)
![Page 85: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/85.jpg)
Regras de Transformação
12.Operação de projeção pode ser comutada com junção (ou produto cartesiano)
▫ Relação A atributos a→1,...,a
n
▫ Relação B atributos b→1,...,b
m
▫ L = (a1,...,a
n,b
1,...,b
m)
▫ Condição só contém atributos L
▫ projL(A junção B) equivale (proj
a1,...,an(A)) junção
(projb1,...,bn
(B))
![Page 86: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/86.jpg)
Heurística
▪ Baseados em (10), (11) e (12)
▫ Desmembrar operações de projeção
▫ Mover projeções em direção às folhas
▫ Criar operações de projeção para manter apenas atributos necessários
![Page 87: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/87.jpg)
Projeções Mais Cedo
LIVROPERTENCE
CATEGORIA
CATEGORIA.Codigo=PERTENCE.CodCategoria
LIVRO.Titulo
LIVRO.Ano>1996
LIVRO.ISBN=PERTENCE.ISBN
CATEGORIA.Nome=“poesia”
CATEGORIA.Codigo
PERTENCE.ISBN
LIVRO.ISBN, LIVRO.Titulo
![Page 88: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/88.jpg)
Heurística
▪ Identificar subárvores com operações a ser combinadas em um algoritmo
![Page 89: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/89.jpg)
Exercício 3▪ Considere as seguintes tabelas:
▫ R(A,B,C,D)
▫ S(E,F,G,H) - E é chave-estrangeira que referencia R(A)
a) desenhe um plano de acesso otimizado para a consulta:
▫ select A from R, Swhere A=5 and G=7 and F=A
![Page 90: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/90.jpg)
Referências
▪ Elmasri, Ramez; Navathe, Shamkant B. (2005) Sistemas de Bancos de Dados. Addison-Wesley, 4a edição em português.
▪ Elmasri, Ramez; Navathe, Shamkant B. (2011) Sistemas de Bancos de Dados. Addison-Wesley, 6a edição em português.
▪ Ramakrishnan, Raghu; Gehrke, Johannes (2003) Database Management Systems. McGraw-Hill, 3rd edition.
![Page 91: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/91.jpg)
André Santanchèhttp://www.ic.unicamp.br/~santanche
![Page 92: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/2013-2/... · 2013. 9. 29. · Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè](https://reader033.vdocument.in/reader033/viewer/2022060707/6072d4d91b9ddc113a37530a/html5/thumbnails/92.jpg)
Licença▪ Estes slides são concedidos sob uma Licença Creative
Commons. Sob as seguintes condições: Atribuição, Uso Não-Comercial e Compartilhamento pela mesma Licença.
▪ Mais detalhes sobre a referida licença Creative Commons veja no link:http://creativecommons.org/licenses/by-nc-sa/3.0/
▪ Fotografia da capa e fundo porhttp://www.flickr.com/photos/fdecomite/Ver licença específica emhttp://www.flickr.com/photos/fdecomite/1457493536/