Processamento de Consultas Picture by - - PowerPoint PPT Presentation

processamento de consultas
SMART_READER_LITE
LIVE PREVIEW

Processamento de Consultas Picture by - - PowerPoint PPT Presentation

Processamento de Consultas Picture by http://www.flickr.com/photos/fdecomite/1457493536/ Banco de Dados: Teoria e Prtica Andr Santanch e Luiz Celso Gomes Jr Instituto de Computao UNICAMP Setembro 2013 Execuo de Consulta em


slide-1
SLIDE 1

Processamento de Consultas

Banco de Dados: Teoria e Prática

André Santanchè e Luiz Celso Gomes Jr Instituto de Computação – UNICAMP

Setembro 2013

Picture by http://www.flickr.com/photos/fdecomite/1457493536/

slide-2
SLIDE 2

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ódigo de consulta Otimizador de Consulta Plano de execução Código para executar a consulta Processador em tempo de execução do banco de dados Resultado da consulta

slide-3
SLIDE 3

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ódigo de consulta Otimizador de Consulta Plano de execução Código para executar a consulta Processador em tempo de execução do banco de dados Resultado da consulta

slide-4
SLIDE 4

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ódigo de consulta Otimizador de Consulta Plano de execução Código para executar a consulta Processador em tempo de execução do banco de dados Resultado da consulta

slide-5
SLIDE 5

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ódigo de consulta Otimizador de Consulta Plano de execução Código para executar a consulta Processador em tempo de execução do banco de dados Resultado da consulta

slide-6
SLIDE 6

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ódigo de consulta Otimizador de Consulta Plano de execução Código para executar a consulta Processador em tempo de execução do banco de dados Resultado da consulta

slide-7
SLIDE 7

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ódigo de consulta Otimizador de Consulta Plano de execução Código para executar a consulta Processador em tempo de execução do banco de dados Resultado da consulta

slide-8
SLIDE 8

Ênfase desta aula: Otimização de Consultas

slide-9
SLIDE 9

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

slide-10
SLIDE 10

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

slide-11
SLIDE 11

Decomposição em Blocos

Exemplo

▪ Tabela

Pessoa(Codigo, Nome, Telefone, AnoFiliacao)

▪ Nome dos filiados mais antigos:

SELECT Codigo, Nome FROM PESSOA WHERE AnoFiliacao = (SELECT MIN(AnoFiliacao)) FROM PESSOA)

▪ Blocos

SELECT Codigo, Nome

FROM PESSOA WHERE AnoFiliacao = (referência )

SELECT MIN(AnoFiliacao))

FROM PESSOA

slide-12
SLIDE 12

Algoritmos para Operações

slide-13
SLIDE 13

Ordenação Externa

slide-14
SLIDE 14

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

slide-15
SLIDE 15

Ordenação Externa

slide-16
SLIDE 16

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)

Exemplo Inspirado em (Ramakrishnan, 2013)

slide-17
SLIDE 17

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 5 passo 0

  • rdenaçã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)
slide-18
SLIDE 18

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 5 passo 0

  • rdenação

2 , 5 7 , 9 1 , 4 6 , 8 1 , 3 6 , 9 5 passo 1 merge

Primeiro merge:

  • 3 blocos de memória (bm)
  • 13 leituras e 13 gravações de bloco (bd*2 transferências)
slide-19
SLIDE 19

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 5 passo 0

  • rdenaçã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 1 merge passo 2 merge

Segundo merge:

  • 3 blocos de memória (bm)
  • 13 leituras e 13 gravações de bloco (bd*2 transferências)
slide-20
SLIDE 20

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 5 passo 0

  • rdenaçã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 1 merge passo 2 merge passo 3 merge

Terceiro merge:

  • 3 bms
  • bd*2 transferências
slide-21
SLIDE 21

Ordenação Externa Números

▪ bd – blocos em disco ▪ bm – blocos de memória

▫ bme – blocos de entrada = bm - 1 ▫ bms – blocos de saída = 1

slide-22
SLIDE 22

Ordenação Externa Nú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 = log28+1 = 4 níveis

▪ Custo: 2*bd * (log2rodadas+1)

slide-23
SLIDE 23

Como Otimizar?

slide-24
SLIDE 24

Se eu tiver 5 blocos de memória?

slide-25
SLIDE 25

5 , 9 7 , 2 8 , 4 1 , 6 3 , 6 9 , 1 5 entrada passo 0

  • rdenaçã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 1 merge

slide-26
SLIDE 26

Ordenação Externa Nú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)

▫ logbmerodadas+1 = log44+1 = 2 rodadas

▪ Custo: 2*bd * (logbmerodadas+1)

slide-27
SLIDE 27

Seleção

slide-28
SLIDE 28

Esquema Conceitual – Exemplo

Tá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 Taxi Corrida 1 N N 1

CliId Nome DataPedido Placa Marca Modelo AnoFab

slide-29
SLIDE 29

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)

slide-30
SLIDE 30

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)

slide-31
SLIDE 31

Exatamente Igual Chave 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)

slide-32
SLIDE 32

AnoFab=2002(TX)

Exatamente Igual Outra 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

slide-33
SLIDE 33

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

slide-34
SLIDE 34

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

slide-35
SLIDE 35

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

slide-36
SLIDE 36

Algoritmos de Seleção

▪ Exatamente igual

▫ chave primária ▫ outra chave

▪ >, <, >=, <= ▪ compostos

slide-37
SLIDE 37

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

slide-38
SLIDE 38

Seleção Conjuntiva x Dijuntiva

▪ seleção conjuntiva - e.g., and ▪ seleção dijuntiva - e.g., or

slide-39
SLIDE 39

Algoritmos de Seleção Conjuntiva

▪ Índice para uma das condições ▪ Índice composto envolvendo ambas as

condições

▪ Índice individual para cada condição

slide-40
SLIDE 40

Seletividade

▪ seletividade: valor entre 0 e 1 ▪ n registros ▪ igualdade atributo único

▫ seletividade: 1/n

slide-41
SLIDE 41

Seletividade Atributo Não Único

▪ i valores ▪ i igualmente distribuído ▪ registros por valor? ▪ seletividade?

slide-42
SLIDE 42

Seletividade Atributo Não Único

▪ i valores ▪ i igualmente distribuído ▪ n/i registros por valor ▪ seletividade: 1/i

slide-43
SLIDE 43

Seletividade Atributo Não Único

▪ primeiro as condições com valor menor de

seletividade

slide-44
SLIDE 44

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

  • índice do atributo no processamento?
slide-45
SLIDE 45

Junção (Join)

slide-46
SLIDE 46

Junção (Join) de Loop Aninhado

for each ti for each tj if match(ti, tj) add-result(ti, tj)

slide-47
SLIDE 47

Junção de Loop Aninhado Números

▪ ni - número de tuplas ti ▪ nj - número de tuplas tj ▪ pares de tuplas? (comparações?)

slide-48
SLIDE 48

Junção de Loop Aninhado Números

▪ ni - número de tuplas ti ▪ nj - número de tuplas tj ▪ ni*nj - pares de tuplas

slide-49
SLIDE 49

Junção de Loop Aninhado Nú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?

slide-50
SLIDE 50

Junção de Loop Aninhado Nú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

slide-51
SLIDE 51

Junção de Loop Aninhado Nú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)

slide-52
SLIDE 52

Junção de Loop Aninhado Nú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
slide-53
SLIDE 53

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)

slide-54
SLIDE 54

Junção de Loop Aninhado em Bloco Números

▪ bi - bloco de tuplas ti ▪ bj - bloco de tuplas tj ▪ leituras de blocos?

slide-55
SLIDE 55

Junção de Loop Aninhado em Bloco Números

▪ bi - bloco de tuplas ti ▪ bj - bloco de tuplas tj ▪ bi + bj*bi leituras de blocos

slide-56
SLIDE 56

Exercício 2

▪ Considere as seguintes tabelas e consulta:

▫ Aluno(ra, nome, id_dept) ▫ Departamento(id_dept, nome_dept)

▫ SELECT ra, nome, nome_dept

FROM Aluno, Departamento WHERE 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.

slide-57
SLIDE 57

Outras Junções

▪ Junção Indexada ▪ Junção Merge ▪ Junção Hash

slide-58
SLIDE 58

Projeção

▪ Recorte dos campos ▪ (?)

slide-59
SLIDE 59

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
slide-60
SLIDE 60

Otimização de Consulta

slide-61
SLIDE 61

SQL p/ Álgebra

▪ Versão SQL

SELECT Codigo, Nome FROM PESSOA WHERE AnoFiliacao = 1990

▪ Versão em álgebra

Codigo,Nome(AnoFiliacao=1990(PESSOA))

▪ Versão Árvore

PESSOA

Codigo,Nome AnoFiliacao=1990

slide-62
SLIDE 62

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
  • peração subsequente
slide-63
SLIDE 63

exemplo: Java Writer Pipelining

Pattern Pipe & Filter

slide-64
SLIDE 64

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

slide-65
SLIDE 65

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

slide-66
SLIDE 66

Exemplo de Pipeline

PESSOA

Codigo Nome Telefone AnoFiliacao 1525 Asdrúbal 5432-1098 1990 2042 Melissa 7654-3210 1990

AnoFiliacao=1990

PESSOA

slide-67
SLIDE 67

Exemplo de Pipeline

Codigo,Nome AnoFiliacao=1990

Codigo Nome Telefone AnoFiliacao 1525 Asdrúbal 5432-1098 1990 2042 Melissa 7654-3210 1990

PESSOA

PESSOA

slide-68
SLIDE 68

Exemplo de Pipeline

Codigo,Nome AnoFiliacao=1990

Codigo Nome 1525 Asdrúbal 2042 Melissa

PESSOA

PESSOA

slide-69
SLIDE 69

Árvore de Consulta

PESSOA

Codigo,Nome AnoFiliacao=1990

folha: relação de entrada fluxo

slide-70
SLIDE 70

Heurísticas para Otimização de Consulta (Elmasri, 2011)

slide-71
SLIDE 71

Heurísticas para Otimização de Consulta

▪ Título dos livros sobre poesia escritos depois

de 1996

SELECT LIVRO.Titulo FROM LIVRO, PERTENCE, CATEGORIA WHERE CATEGORIA.Nome = “poesia” AND LIVRO.ISBN = PERTENCE.ISBN AND CATEGORIA.Codigo = PERTENCE.CodCategoria AND LIVRO.Ano > 1996

slide-72
SLIDE 72

Heurística para Otimização de Consulta

LIVRO PERTENCE CATEGORIA X X

CATEGORIA.Nome=“poesia” AND LIVRO.ISBN=PERTENCE.ISBN AND

CATEGORIA.Codigo=PERTENCE.CodCategoria AND LIVRO.Ano>1996

LIVRO.Titulo

slide-73
SLIDE 73

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

slide-74
SLIDE 74

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 é

slide-75
SLIDE 75

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)

slide-76
SLIDE 76

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

slide-77
SLIDE 77

Quebrando e Descendo Seleções

LIVRO PERTENCE CATEGORIA X X

CATEGORIA.Codigo=PERTENCE.CodCategoria

LIVRO.Titulo

LIVRO.Ano>1996 LIVRO.ISBN=PERTENCE.ISBN CATEGORIA.Nome=“poesia”

slide-78
SLIDE 78

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

slide-79
SLIDE 79

Heurística

▪ Operações de seleção mais restritivas devem

ser executadas primeiro (5) e (6)

slide-80
SLIDE 80

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”

slide-81
SLIDE 81

Regra de Transformação

9.Operações de produto cartesiano + seleção podem se converter em junção

slide-82
SLIDE 82

Heurística

▪ Converta produtos cartesianos + seleções em

junções

slide-83
SLIDE 83

Produto Cartesiano + Seleção = Junção

LIVRO PERTENCE CATEGORIA

CATEGORIA.Codigo=PERTENCE.CodCategoria

LIVRO.Titulo

LIVRO.Ano>1996 LIVRO.ISBN=PERTENCE.ISBN CATEGORIA.Nome=“poesia”

slide-84
SLIDE 84

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)

slide-85
SLIDE 85

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,...,an

▫ Relação B atributos b

1,...,bm

▫ L = (a1,...,an,b1,...,bm) ▫ Condição só contém atributos L ▫ projL(A junção B) equivale (proja1,...,an(A)) junção

(projb1,...,bn(B))

slide-86
SLIDE 86

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

slide-87
SLIDE 87

Projeções Mais Cedo

LIVRO PERTENCE 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

slide-88
SLIDE 88

Heurística

▪ Identificar subárvores com operações a ser

combinadas em um algoritmo

slide-89
SLIDE 89

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, S

where A=5 and G=7 and F=A

slide-90
SLIDE 90

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.

slide-91
SLIDE 91

André Santanchè

http://www.ic.unicamp.br/~santanche

slide-92
SLIDE 92

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 por

http://www.flickr.com/photos/fdecomite/ Ver licença específica em http://www.flickr.com/photos/fdecomite/1457493536/