otimização de consultas em sql parte ii - planos alternativos - estimativa de custos dos planos de...
TRANSCRIPT
![Page 1: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/1.jpg)
Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa
de Custos dos Planos de Execução
AULA 19
Profa. Sandra de Amo
Programa de Pós-Graduação em CC - UFU
Sistemas de Banco de Dados - 2012-2
![Page 2: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/2.jpg)
Catálogo do SistemaInformações armazenadas no catálogo, necessárias no processo de otimização: Informações gerais:
Tamanho do buffer pool (espaço livre) Tamanho de uma página em disco
Informações sobre as tabelas Informações sobre índices Informações sobre visões Estatísticas sobre tabelas e indices: atualizadas periodicamente Informações sobre usuários: contas, autorizações de acesso (escrita,
leitura), etc. Alguns SGBDs mais sofisticados:
Histogramas sobre a distribuição dos valores de cada atributo. A partir destas informações é possivel ter informação mais acurada sobre o
tamanho dos resultados de uma operação, sobre a seletividade de um método de acesso, etc.
![Page 3: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/3.jpg)
Informações sobre tabelas, índices e visões Tabelas
Nome da tabela, nome ou identificador do arquivo, estrutura de arquivo (heap, ordenado, hash)
Nome e tipo de cada atributo Nome dos índices existentes para cada tabela As restrições de integridade (chaves primárias, chaves candidatas,
chaves estrangeiras, etc) para cada tabela Indices
O nome do índice e sua estrutura (hash, b+tree) A chave do índice
Visões Nome da visão e sua definição (o código da consulta SQL que a
define)
![Page 4: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/4.jpg)
Estatísticas sobre tabelas e indices: NTuples (R) = Número de tuplas da tabela R NPages(R) = Número de páginas da tabela R NKeys(I) = número de chaves distintas do Indice I INPages(I) = número de páginas do indice I
(no caso de B+tree = número de folhas) IHeight(I) = Altura do Indice (no caso de B+tree) ILow(I) = menor valor de chave do indice I IHigh(I) = maior valor de chave do indice I
![Page 5: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/5.jpg)
Como o catálogo é armazenado : Coleção de Tabelas
Exemplo Sailors(sid:integer, sname:string, rating:integer, age:real) Reservas(sid:integer, bid:integer, day:dates, rname:string)
Tabela do catálogo: Attribute_Cat(atname:string, relname:string, type:string,
position:integer) Catálogo pode ser consultado usando SQL ! Escolha das tabelas do catálogo e seus esquemas
depende do implementador do SGBD.
![Page 6: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/6.jpg)
Uma tabela do catálogoatname relname type position
atname Attribute_Cat string 1
relname Attribute_Cat string 2
type Attribute_Cat string 3
position Attribute_Cat integer 4
sid Sailors integer 1
sname Sailors string 2
rating Sailors integer 3
age Sailors real 4
sid Reservas integer 1
bid Reservas integer 2
day Reservas dates 3
rname Reservas string 4
![Page 7: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/7.jpg)
Plano de Execução
SELECT S.sname
FROM Reservas R, Sailors S
WHERE R.sid = S.sid
AND R.bid = 100
AND S.rating > 5
σ
Reservas Sailors
Πsname
bid=100 and rating > 5
sid=sid
![Page 8: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/8.jpg)
Complementando o plano: como será implementado ?
σ
Reservas Sailors
Πsname
bid=100 and rating > 5
sid=sid
(scan) (scan)
Simple Nested Loops página a página
On-the-fly
On-the-fly
Tabela externa Tabela interna
![Page 9: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/9.jpg)
Pipeline versus Tabelas Materializadas Pipeline : resultado de uma operação é
transferido para a próxima operação sem a criação de uma tabela em disco.
Economia de custos de armazenamento e de leitura posterior
Sempre que o algoritmo do operador para o qual é transferido o resultado permitir, a técnica de pipeline é utilizada.
![Page 10: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/10.jpg)
Exercício Diga se é possível utilizar a estratégia de
pipeline para implementar um duplo join utilizando o algoritmo NLJ/p-p para os dois Joins
A B C Em caso afirmativo, explique como funciona
o algoritmo.
![Page 11: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/11.jpg)
Estimativa de Custos de um Plano de Execução
Para cada nó da árvore N da árvore, seja Op(N) a operação associada a N.
Tarefas do Estimador de Custos Estimar do custo de Op(N) Estimar o tamanho do resultado de Op(N)
![Page 12: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/12.jpg)
Estimativa do Tamanho do ResultadoSELECT <lista de atributos> FROM < lista de relações R1,...,Rk > WHERE <cond1 ^ cond2 ^....^condn>
Número máximo de tuplas no resultado = M1.M2....Mk, onde Mi = tamanho de Ri Cláusula WHERE atua como um redutor desta
estimativa Cada condição do WHERE tem o seu fator de
redução próprio
![Page 13: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/13.jpg)
Fatores de Redução R.A = valor
Fator de redução = 1/NKeys(I), caso exista um indice I com chave A para a relação R
Fator de redução = 1/10, caso contrário (ou utiliza-se estatísticas mantidas no catálogo sobre a distribuição dos valores dos atributos)
R.A = R.B Fator de redução = 1/Max(NKeys(IA),NKeys(IB)) se
existe indices IA e IB com chave A e B respectivamente. Fator de redução = 1/NKeys(I) se somente um dos
atributos é chave de um indice I Fator de redução = 1/10 caso contrário.
![Page 14: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/14.jpg)
Fatores de Redução R.A > valor
Fator de redução = (High(I) – valor) / High(I) – Low(I) caso exista um indice I com chave A para a relação R
Fator de redução = fração < ½ caso não exista indice ou se o valor não é aritmético
R.A IN (Lista de valores) Fator de redução =
N*(fator de redução de R.A = valor), onde N = núm. de itens
Fator de redução = fração < ½ caso não exista índice ou se o valor não é aritmético.
![Page 15: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/15.jpg)
Fatores de Redução R.A IN (Subconsulta)
Fator de redução: M/N onde M = tamanho do resultado da Subconsulta N = número de valores do atributo R.A
NOT (Cond) Fator de redução: (1 – Fator de Redução(Cond))
Fator de Redução da Projeção = fração equivalente ao tamanho dos atributos que não são projetados.
![Page 16: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/16.jpg)
Histogramas Estimativas do fator de redução: supõem que
os valores dos atributos são distribuídos uniformemente.
Histogramas: Técnica mais sofisticada e acurada para estimar o
fator de redução Necessita que estatísticas sobre a variação dos
valores dos atributos sejam armazenadas no catálogo e atualizadas periodicamente.
![Page 17: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/17.jpg)
Histograma
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
2
3 3
12 22
3
1 10
8
4 4
9
3
3 3 33 3 3 3 33 3 3 3 3 3 3
![Page 18: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/18.jpg)
Histograma 45 tuplas, 15 valores
Distribuição uniforme: 3 tuplas para cada valor Distribuição não-uniforme: número de tuplas para
cada valor pode variar bastante Histograma: estrutura mantida pelo SGBD
em seu catálogo que dá uma estimativa do número de tuplas por faixa de valor
![Page 19: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/19.jpg)
Histograma por largura
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
2.671.33
5
1
5 5 5
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
2
3 3
12 22
3
1 10
8
4 4
9
3
![Page 20: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/20.jpg)
Histograma por largura
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
2.671.33
5
1
5 5 5
Distribuição uniforme: 3 tuplas Distribuição histograma: 5 tuplas
Qual a estimativa da quantidade de tuplas com AGE > 13 ?
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
3 3 33 3 3 3 33 3 3 3 3 3 3
![Page 21: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/21.jpg)
Histograma por profundidade
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
1.80
6
9
2.67
8 tuplas 7 tuplas
1.75
12 tuplas 9 tuplas 9 tuplas
Distribuição histograma = 9 tuplas
6
Qual a estimativa da quantidade de tuplas com AGE > 13 ?
![Page 22: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/22.jpg)
Histogramas comprimidos Histogramas por profundidade produzem melhores
estimativas do que histogramas por largura Histogramas comprimidos
Mantém contadores para valores mais frequentes (por exemplo idade = 7 e idade = 14)
Para os outros valores, mantém um histograma por profundidade (de preferência) ou por largura.
Muitos SGBDs utilizam histograma por profundidade, alguns utilizam mesmo histogramas comprimidos.
![Page 23: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/23.jpg)
Planos de execução para múltiplos “Join”
A B C D
A B
C
D
A B
C
D
BA C D
PLANOS LINEARES
PLANO BUSHY
PLANO POR PROFUNDIDADE À ESQUERDA
![Page 24: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/24.jpg)
Planos por profundidade à esquerda São os únicos a serem considerados:
Quanto maior o número de joins maior o número de planos alternativos. Por isto opta-se por considerar somente os left-deep.
Planos left-deep permitem utilizar estratégia pipeline à esquerda com a relação externa. A relação interna é sempre uma relação de base (materializada).
Repare que não é possível utilizar pipeline à direita de um join. É sempre necessário que a relação interna esteja disponível em sua integralidade, pois é varrida diversas vezes.
No caso de planos left-deep, este problema não acontece, pois o filho à direita de um Join é sempre uma relação de base (materializada).
![Page 25: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/25.jpg)
Planos para Consultas AninhadasSELECT S.snameFROM Sailors SWHERE S.rating = (SELECT MAX (S2.rating) FROM Sailors S2)
Subconsulta interna: SELECT MAX (S2.rating) FROM Sailors S2
Executada uma única vez, produzindo um número X
SELECT S.snameFROM Sailors SWHERE S.rating = X
![Page 26: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/26.jpg)
SELECT S.snameFROM Sailors SWHERE S.sid IN (SELECT R.sid FROM Reserves R WHERE R.bid = 103) Estratégia de execução comum
Subconsulta interna é avaliada e materializada (T)Faz-se um Join Sailors = relação externa
T = relação interna (subconsulta sempre é relação interna) Alguns SGBDs têm estratégias mais sofisticadas:
Pode tranformar T em relação externa do Join e Sailors na interna, caso for mais vantajoso, por exemplo, se Sailors possui indice Hash no atributo sid
Planos para Consultas Aninhadas
![Page 27: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/27.jpg)
Tratamento de Consultas Aninhadas CorrelatasSELECT S.sname
FROM Sailors S
WHERE EXISTS (SELECT *
FROM Reserves R
WHERE R.bid = 103 AND S.sid = R.sid) Consulta externa e interna são correlatas: atributo sid da
externa aparece na consulta interna. Não é possível avaliar a consulta interna uma única vez. Estratégia típica de execução: consulta interna é calculada
para cada tupla de S
![Page 28: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/28.jpg)
Aninhadas versus não-aninhadas Uma consulta aninhada frequentemente é equivalente a uma
não aninhada. Consultas aninhadas correlatas frequentemente têm uma
versão sem correlação. Um otimizador tipico é capaz de encontrar um bom plano de
execução se dispõe de uma versão não-aninhada ou sem correlações.
Boa parte dos otimizadores não são capazes de transformar consultas aninhadas em não aninhadas ou de eliminar correlações.
Assim, fica a cargo do usuário formular a consulta de modo a evitar aninhamentos e/ou correlações.
![Page 29: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/29.jpg)
EXERCÍCIOS
Cálculo de Custos de
Planos de Execução
![Page 30: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/30.jpg)
Cálculo de Custos de Planos de Execução
Exercício1 : Calcule o custo deste plano
R : 1000 páginas
S : 500 páginas
R: 100 tuplas por páginaS: 80 tuplas por página
σ
Reservas Sailors
Πsname
bid=100 and rating > 5
sid=sid
(scan) (scan)
Simple Nested Loops página a página
On-the-fly
On-the-fly
Tabela externa Tabela interna
![Page 31: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/31.jpg)
“Empurrando” seleções para baixo na árvore de execução
Exercicio 2: Calcule o custo deste planoNúmero de valores para bid = 100
Rating varia de 1 a 10Uniformemente distribuidos
Numero de páginas no buffer = 5
σ
Reservas Sailors
Πsname
bid=100
sid=sid
(scan) (scan)
Sorte-Merge Join
On-the-fly
Tabela externa Tabela interna
rating > 5σ Scan, write to Temp2Scan, write to Temp1
![Page 32: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/32.jpg)
“Empurrando” seleções para baixo na árvore de execução
Exercicio 3 : Calcule o custo deste planoNúmero de valores para bid = 100
Rating varia de 1 a 10Uniformemente distribuidos
Numero de páginas no buffer = 5
σ
Reservas Sailors
Πsname
bid=100
sid=sid
(scan) (scan)
Block Nested Looping Join
On-the-fly
Tabela externa Tabela interna
rating > 5σ Scan, write to Temp2Scan, write to Temp1
![Page 33: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/33.jpg)
“Empurrando” projeções para baixo na árvore de execução
Exercicio 4 : Calcule o custo deste planoNúmero de valores para bid = 100
Rating varia de 1 a 10Uniformemente distribuídosNúmero de páginas no buffer = 5
σ
Reservas Sailors
Πsname
bid=100
sid=sid
(scan) (scan)
Block Nested Looping Join
On-the-fly
Tabela externa Tabela interna
rating > 5σ
Scan, write to Temp2Scan, write to Temp1
Π sidΠ sid,sname On-the-fly On-the-fly
![Page 34: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/34.jpg)
Nem sempre “empurrar seleções abaixo do join é vantajoso”
σ
ReservasSailors (tem índice hash em sid, não necessariamente agrupado)
Πsname
rating > 5
sid=sid
(tem índice hash em bid, agrupado e estático)
Index Nested Loops com pipeline
On-the-fly
On-the-fly
Tabela externa Tabela interna
σbid=100
Exercício 5 : Calcule o custo deste planoNúmero de valores para bid = 100
Rating varia de 1 a 10Uniformemente distribuídosNúmero de páginas no buffer = 5
On-the-fly
![Page 35: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/35.jpg)
Nem sempre execuções em pipeline são mais vantajosas que as materializadas
σ
ReservasSailors (tem índice hash em sid)
Πsname
rating > 5
sid=sid
(tem índice hash em bid, agrupado e estático)
Index Nested Loops
On-the-fly
On-the-fly
Tabela externa Tabela interna
σbid=100
Exercício 6 : Calcule o custo deste plano•Número de valores para bid = 100•Rating varia de 1 a 10 uniformemente distribuídos• Número de páginas no buffer = 5• Todos os marinheiros fizeram reservas de barcos.• Reservas distribuidas uniformemente entre os marinheiros.• Todos os barcos foram reservados um mesmo número de vezes
Scan, write to Tempordena por sid
![Page 36: Otimização de Consultas em SQL Parte II - Planos Alternativos - Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação](https://reader035.vdocuments.site/reader035/viewer/2022062307/552fc105497959413d8c0434/html5/thumbnails/36.jpg)
Seleção por atributo chave “empurrada” abaixo do Join é muito vantajosa.
σ
Reservas
Sailors (tem índice hash em sid)
Πsname
rating > 5
sid=sid
(tem índice hash em bid, agrupado e estático)
Index Nested Loops com pipeline
On-the-fly
On-the-fly
Tabela externa
Tabela internaσ
bid=100
Exercício 7 : Calcule o custo deste plano•Número de valores para bid = 100•Rating varia de 1 a 10 uniformemente distribuídos• Número de páginas no buffer = 5• Todos os marinheiros fizeram reservas de barcos.• Reservas distribuidas uniformemente entre os marinheiros.• (bid,day) é chave de Reservas
σday = 09/09/82
On-the-fly
On-the-fly
Compare com o custo do planodo exercicio 1.