Query Processing. Elaborazione delle Query. Esempio. Come passare da una query ad un piano per eseguirla?

Documenti analoghi
Elaborazione delle Query

Elaborazione delle Query

La gestione delle interrogazioni

Ottimizzazione delle query. Stima dell IO: Per generare i piani si considera: --> Generare e confrontare i piani Query

Ottimizzazione delle query

Equivalenza di Espressioni Algebriche

Memorizzazione di una relazione

INTRODUZIONE AL 2 TEST IN ITINERE. a.a

Linguaggi per Basi di Dati - 1. Algebra Relazionale. Algebra Relazionale. Linguaggi per Basi di Dati - 2. Operatori Insiemistici.

Operatori di base. σ F (r) = {t t r. F(t) = true} SELEZIONE σ F (r)

Hashing e indici multidimensionali

Basi di dati. Linguaggi di interrogazione

Data Management. Query evaluation. Maurizio Lenzerini, Riccardo Rosati

ALGEBRA RELAZIONALE (CAPITOLO 3) R. Basili a.a

Algebra relazionale. Algebra relazionale. Operatori dell algebra relazionale. Operatori dell algebra relazionale. Algebra relazionale.

Basi di Dati: Corso di laboratorio

Cognome Nome Matricola Ordin.

Structured Query Language

Corso di Basi di Dati

Basi di Dati: Corso di laboratorio

ALGEBRA RELAZIONALE (CAPITOLO 3) R. Basili a.a

Lezione 5. Algebra relazionale

Algebra relazionale: operazioni

Basi di dati II, primo modulo Prova parziale 22 marzo 2010 Compito A

Lezione 6 SQL Basi di dati bis Docente Mauro Minenna Pag.1

Basi di dati. Selezione, proiezione e join. Linguaggi di interrogazione. Selezione, proiezione e join. Equivalenza di espressioni

Basi di Dati. prof. Letizia Tanca. Linguaggi formali di interrogazione per il Modello Relazionale dei Dati

Lezione 6. Algebra e Calcolo Relazionale

Basi di Dati: Corso di laboratorio

Il formato di base di un interrogazione in SQL è: SELECT R i1.c 1, R i2.c 2,..., R in.c n FROM R 1, R 2,..., R k WHERE F;

Algebra Relazionale. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

SQL - Sottointerrogazioni correlate

Algebra Relazionale. Interrogazione Basi di Dati. Algebra relazionale. Algebra relazionale. Unione. Algebra relazionale

Scelte nella valutazione dei costi

ALGEBRA RELAZIONALE. DB -Algebra Relazionale 1

Corso sul linguaggio SQL

ALGEBRA'RELAZIONALE'

Basi di Dati: Corso di laboratorio

(Lezione SQL 3) Barbara Di Camillo Dipartimento di Ingegneria dell Informazione. Università degli Studi di Padova

CALCOLO DEL COSTO DI JOIN. costo di join 1

IL MODELLO RELAZIONALE

Modulo 2 Data Base 3

Uso degli indici nell ottimizzazione delle query SQL

una chiave primaria o secondaria => B+tree primario o secondario (NL,g e h diversi) clustered o unclustered => ho un piano di accesso diverso!!

Basi di Dati. SOLUZIONE della Prova Scritta del 12 Gennaio 2007

Basi di Dati. Esercitazione SQL. 17 novembre 2011

CALCOLO DEL COSTO DI JOIN. costo di join 1

Il modello relazionale

Operatori aggregati. Operatori aggregati. Interrogazioni con raggruppamento. Interrogazioni con raggruppamento

Basi di dati. Gabriella Trucco

Interrogare una base di dati: Algebra relazionale e SQL. Gaetano Anastasi Davide Barcelli Massimo Emiliano Ciaramello Giacoma Monreale

Ottimizzazione di interrogazioni. Ottimizzazione di interrogazioni. Ottimizzazione di interrogazioni. Ottimizzazione di interrogazioni

BASI DATI: algebra relazionale INFORMATICA APPLICATA E SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI

Schema Del DB Operazionale TELEFONATE

Parte III. L algebra relazionale

Basi di dati I Prova di autovalutazione 1 novembre 2016 Soluzioni

SQL: Structured Query Language. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

Basi di dati e Relazioni

Basi di Dati: Strutture ed Algoritmi Appelli del 2001

ELABORAZIONE DELLE INTERROGAZIONI. Roberto Basili Corso di Basi di Dati a.a. 2013/14

Basi di dati - Laboratorio

Tipi di operatori. Gli operatori dell algebra relazionale sono classificabili nelle seguenti categorie:

Basi di Dati: Elementi

Elena Baralis 2007 Politecnico di Torino 1

Tipi di indice. Indici. Leggere sezioni 13.1, 13.2 e 13.3 di Garcia- Molina et al. Tipi di strutture ad indice. ISAM: Indici primari

Basi di Dati. Concetti Avanzati

Informatica II Basi di Dati (07/08) Parte 2. 4 Accesso ai dati di un DB. Accesso ai dati di un DB. Accesso ai dati di un DB

Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor

Parte III L algebra relazionale

Algebra relazionale D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2012/13

Databases. Esercizi su Query SQL

Esercitazione 1 Algebra relazionale

Aggiornamenti e Interrogazioni

Fondamenti di Teoria delle Basi di Dati

E possibile ordinare le righe del risultato di una interrogazione attraverso la clausola order by, a chiusura di una interrogazione.

Basi di dati 8 settembre 2015 Esame Compito A Tempo a disposizione: due ore. Libri chiusi.

Introduzione alla valutazione delle interrogazioni. Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 1

ALGEBRA RELAZIONALE. Linguaggi di interrogazione relazionale

Pag Politecnico di Torino 1

D B M G D B M G 2. Gestione degli indici. Introduzione Strutture fisiche di accesso Definizione di indici in SQL Progettazione fisica

Metodi di Join. Corso di Basi di Dati e Sistemi Informativi

APPUNTI DELLA LEZIONE DI DATABASE DEL 26/10/2016 Studenti: Marco D'Amato, Adriano Luigi Piscopello Professore: Mario Bochicchio

Il theta-join, espresso come prodotto cartesiano seguito da una selezione, è il tipo di join operativamente più generale. Infatti:

Scopo. Informatica. Sistema informativo. Sistema informatico

ELABORAZIONE DELLE INTERROGAZIONI. Roberto Basili Corso di Basi di Dati a.a. 2015/16

Databases. Architettura di un DBMS: Struttura ad indice per i files, B + -Trees

Sistemi di Elaborazione delle Informazioni

Basi di Dati. Esercitazione SQL. 18 maggio 2007

Basi di Dati. Dettagli e Approfondimenti

Prova Scritta di Basi di Dati

Gestione di basi di dati relazionali con SQL (parte II) Valutazione delle condizioni su insiemi di tuple

ALGEBRA RELAZIONALE. L algebra relazionale

Indici multilivello dinamici (B-alberi e B + -alberi) Alberi di ricerca - 1. Un esempio. Alberi di ricerca - 3. Alberi di ricerca - 2

Progettazione logica D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2012/2013

D B M G. Linguaggio SQL: fondamenti. Istruzione SELECT: fondamenti. Elena Baralis 2007 Politecnico di Torino 1. Struttura di base

formulare in SQL una interrogazione per ciascuno dei seguenti punti:

Maschere e Query. C. Marrocco. Università degli Studi di Cassino

Esercitazione ER e Algebra Relazionale

DOCENTE PROF. ALBERTO BELUSSI. Anno accademico 2010/11

Transcript:

Elaborazione delle Query Query Processing Come passare da una query ad un piano per eseguirla? Leggere il capitolo 16 del Garcia- Molina et al. Lucidi derivati da quelli di Hector Garcia-Molina 1 2 Esempio Select B,D From R,S Where R.A = c S.E = 2 R.C=S.C R A B C S C D E a 1 10 10 x 2 b 1 20 20 y 2 c 2 10 30 z 2 d 2 35 40 x 1 e 3 45 50 y 3 Risposta B D 2 x 3 4

Come eseguire la query? Un idea - Esegui prodotto cartesiano - Seleziona le tuple - Fai una proiezione RXS R.A R.B R.C S.C S.D S.E Trotvata! a 1 10 10 x 2 a 1 10 20 y 2.. C 2 10 10 x 2.. 5 6 Algebra relazionale- puo essere usata per descrivere i piani. Es: Piano I Π B,D Un altra idea: Piano II Π B,D σ R.A= c S.E=2 R.C=S.C Join naturale R X S σ R.A = c σ S.E = 2 R S Oppure: Π B,D [ σ R.A= c S.E=2 R.C = S.C (RXS)] 7 8

R S A B C σ (R) σ(s) C D E a 1 10 A B C C D E 10 x 2 b 1 20 c 2 10 10 x 2 20 y 2 c 2 10 20 y 2 30 z 2 d 2 35 30 z 2 40 x 1 e 3 45 50 y 3 Piano III Usa indici su R.A e S.C (1) Usa l indice su R.A per selezionare le tuple di R con R.A = c (2) Per ciascun valore R.C trovato, usa l ndice su S.C per trovare le tuple corr. (3) Elimina le tuple di S con S.E 2 (4) Esegui il join tra le tuple corrispodenti di R,S, proietta sugli attributi B,D e metti nel risultato 9 10 R A B C I1 A= c S C D E a 1 10 10 x 2 <c,2,10> b 1 20 <10,x,2> 20 y 2 verifica=2? c 2 10 30 z 2 d 2 35 output: <2,x> 40 x 1 e 3 45 50 y 3 prossima tupla: <c,7,15> C I2 Ottimizzazione delle query Piano descritto con l algebra relazionale=logical query plan Piano descritto con operatori fisici=physical query plan 11 12

SQL query parse parse tree converti logical query plan applica leggi l.q.p. migliorato stima la dimensione del risultato l.q.p. +dimensioni considera i piani fisici statistiche risposta esegui Pi scegli il migliore {(P1,C1),(P2,C2)...} stima i costi Esempio: SQL query StarsIn(movieTitle,movieYear,starName) MovieStar(name,address,gender,birthdate) SELECT movietitle FROM StarsIn WHERE starname IN ( SELECT name FROM MovieStar WHERE birthdate LIKE %1960 ); physical query plans {P1,P2,..} 13 (Trova i film con star nate nel 1960) 14 Esempio: Parse Tree <Query> <SFW> SELECT <SelList> FROM <FromList> WHERE <Condition> <Attribute> <RelName> <Tuple> IN <Query> movietitle StarsIn <Attribute> ( <Query> ) starname <SFW> SELECT <SelList> FROM <FromList> WHERE <Condition> <Attribute> <RelName> <Attribute> LIKE <Pattern> name MovieStar birthdate %1960 15 Esempio: Generazione dell algebra relazionale StarsIn ΠmovieTitle σ <condition> <tuple> IN Πname <attribute> σbirthdate LIKE %1960 starname MovieStar Il σ in questo caso si chiama selezione a due argomenti ed e a mezza via tra il parse tree e l algebra relazionale 16

Esempio: Piano logico della query ΠmovieTitle σstarname=name Esempio: Piano logico migliorato ΠmovieTitle starname=name StarsIn Πname StarsIn Πname σbirthdate LIKE %1960 σbirthdate LIKE %1960 MovieStar MovieStar Trasformando la condizione IN Un miglioramento sul piano precedente 17 18 Esempio: risultato Stima la dimensione del Esempio: Un piano fisico Abbiamo bisogno della dimensione Hash join Parametri: ordine del join, dimensione della memoria,... StarsIn Π σ MovieStar Scan SEQ Index scan Parametri: Condizione della select,... StarsIn MovieStar 19 20

Esempio: Stima i costi L.Q.P. P1 P2. Pn C1 C2. Cn Scegli il migliore! Ottimizzazione delle Query Al livello dell algebra relazionale Al livello del piano di query fisico Genera i piani Stima i costi, considerando i possibili algoritmi Algoritmi di join Uso o meno degli indici 21 22 Ottimizzazione dell algebra relazionale Regole di trasformazione che preservano l equivalenza Regole: join naturale & prodotto cartesiano & unione & intersezione R S = S R (R S) T = R (S T) 23 24

Note: Dato che i nomi degli attributi sono contenuti nel risultato l ordine degli operandi non e importante Possiamo scriverli anche come alberi, ad es,: T R R S S T Regole: join naturale & prodotto cartesiano & unione & intersezione R S = S R (R S) T = R (S T) R x S = S x R (R x S) x T = R x (S x T) R S = S R R (S T) = (R S) T R S = S R R (S T) = (R S) T 25 26 Regole: selezioni σ p1 p2 (R) = σ p1vp2 (R) = σ p1 [ σ p2 (R)]=σ p2 [ σ p1 (R)] [ σ p1 (R)] S [ σ p2 (R)] La seconda regola funziona solo se R e un insieme e non un bag 27 Esempio: R = {a,b,c} S = {b,c,d} R S S = {a,b,c,d} R B S = {a,b,b,c,c,d} R = {a,a,b,b,b,c} S = {b,b,c,c,d} R S S = {a,b,c,d} R B S = {a,a,b,b,b,b,b,c,c,c,d} 28

σp1vp2 (R) = σp1(r) S σp2(r) Esempio: R={a,a,b,b,b,c} P1 soddisfatto da a,b; P2 soddisfatto da b,c σp1vp2 (R) = {a,a,b,b,b,c} σp1(r) = {a,a,b,b,b} σp2(r) = {b,b,b,c} σp1(r) S σp2 (R)={a,b,c} σp1(r) B σp2 (R) ={a,a,b,b,b,b,b,b,c} Regole σ,,- combinati: σp(r S) = σp(r) σp(s) σp(r - S) = σp(r) - S = σp(r) - σp(s) 29 30 Regole: σ + combinati Siano p = predicati con solo attr. di R q = predicati con solo attr. di S m = predicati con solo attr. di R,S σ p (R S) = [σ p (R)] S σ q (R S) = R [σ q (S)] σ m (R S) = σ m (R) σ m (S) Regole: σ + combinati (continua) Alcune regole possono essere derivate: σp q (R S) = σp q m (R S) = σpvq (R S) = 31 32

σp q (R S) = [σp (R)] [σq (S)] σp q m (R S) =σm[(σp R) (σq S)]=[σm(σp(R)) σm(σq (S))] σpvq (R S) = [(σp R) S] S [R Solo se (σp R) S e R insiemi e non bag (σq S)] (σq S) sono 33 --> Derivazione per la prima: σp q (R S) = σp [σq (R S) ] = σp [ R σq (S) ] = [σp (R)] [σq (S)] 34 Regole per σ, combinati con X σp (R X S) = σp (R) X S σq (R X S) = R X σp (S) Regole: proiezione Siano: X = insieme di attributi Y = insieme di attributi XY = X Y πxy (R) = πx [πy (R)] 35 36

Regole: π,σ combinate Sia x = sottoinsieme degli attributi di R z = attributi nel predicato P (sottoinsieme degli attributi di R) πxz πx[σp (R) ] = πx {σp [ πx (R) ]} Regole: π, combinati Sia x = sottoinsieme degli attributi di R y = sottoinsieme degli attributi di S z = intersezione degli attributi di R,S πxy (R S) = πxy{[πxz (R) ] [πyz (S) ]} 37 38 πxy {σp (R S)} = πxy {σp [πxz (R) πyz (S)]} z = z U {attributi usati in P} Quali sono buone trasformazioni? σp1 p2 (R) σp1 [σp2 (R)] σp (R S) [σp (R)] S R S S R πx [σp (R)] πx {σp [πxz (R)]} 39 40

Normalmente: esegui le proiezioni prima possibile Ma se A e B hanno indici? Esempio: R(A,B,C,D,E) x={e} P: (A=3) (B= cat ) B = cat A=3 πx {σp (R)} rispetto. πe{σp{πabe(r)}} Interseca i puntatori per ottenere i puntatori alle tuple richieste 41 42 In conclusione: Non sempre conviene anticipare le proiezioni Regola per le selezioni Normalmente e buono anticipare le selezioni, cioe spingerle in basso nell albero 43 44

Eccezione Eccezione StarsIn(title, year, starname) Movie(title,year,length, incolor,studioname, producerc#) CREATE VIEW MovieOf1996 AS SELECT * FROM Movie WHERE year=1996 SELECT starname, studioname FROM MoviesOf1996 m JOIN StarsIn s ON m.title=s.title AND m.year=s.year ΠstarName,studioName σyear=1996 Movie StarsIn 45 46 Si usa la regola Eccezione Eccezione ΠstarName,studioName σ p (R S) = σ p (R) S da destra verso sinistra e si porta la selezione sopra il join A questo punto, dato che year e anche attributo di StarsIn e il join contiene year, si puo spingere la selezione ad entrambi i figli del join 47 σyear=1996 σyear=1996 Movie StarsIn Quindi in alcuni casi occorre far salire le selezioni il piu possibile prima di farle scendere 48

Schema - Query Processing Livello dell algebra relazionale (logical query plan) Buone trasformazioni Livello del piano di query fisico Stima dei costi Genera e confronta i piani fisici dai piani logici Stima del costo di un piano di query (1) Stima della dimensione dei risultati (2) Stima del numero di IOs 49 50 Stima della dimensione del risultato Mantieni le statistiche per la relazione R T(R) : # tuple in R S(R) : # di bytes in ciascuna tupla di R B(R): # di blocchi per tenere tutte le tuple di R V(R, A) : # di valori distinti in R per l attributo A Esempio R A B C D A: stringa di 20 byte cat 1 10 a B: intero di 4 byte cat 1 20 b dog 1 30 a dog 1 40 c C: data di 8 byte D: stringa di 5 byte bat 1 50 d T(R) = 5 S(R) = 37 V(R,A) = 3 V(R,C) = 5 V(R,B) = 1 V(R,D) = 4 51 52

Stima del numero di blocchi Stima della dimensione per W = R1 x R2 Ipotesi: Record impaccati Tutto lo spazio nei blocchi occupato da record (no strutture ausiliarie) T(W) = S(W) = T(R1) T(R2) S(R1) + S(R2) B(R)=T(R)*S(R)/B Dove B e la dimensione in bytes del blocco 53 54 Stima della dimensione per W = σa=a (R) S(W) = S(R) Esempio R A B C D cat 1 10 a cat 1 20 b dog 1 30 a V(R,A)=3 V(R,B)=1 V(R,C)=5 V(R,D)=4 T(W) =? dog 1 40 c bat 1 50 d W = σz=val(r) T(W) = T(R)/V(R,Z) W = σa=val(r) T(W) = T(R)/3 55 56

Assunzione: I valori per l attributo Z sono uniformemente distribuiti sui possibili V(R,Z) valori Assunzione alternativa: I valori per l attributo Z sono uniformemente distribuiti sul dominio con DOM(R,Z) valori. 57 58 Esempio R A B C D cat 1 10 a cat 1 20 b dog 1 30 a dog 1 40 c bat 1 50 d Assunzione alternativa V(R,A)=3 DOM(R,A)=10 V(R,B)=1 DOM(R,B)=10 V(R,C)=5 DOM(R,C)=10 V(R,D)=4 DOM(R,D)=10 C=val T(W) = 5/10=0.5 B=val T(W)= 5/10=0.5 A=val T(W)= 5/10= 0.5 W = σz=val(r) T(W) = T(R) DOM(R,Z) 59 60

Cardinalita della selezione SC(R,A) = # medio di record che soddisfano una condizione di uguaglianza su R.A T(R) V(R,A) SC(R,A) = T(R) DOM(R,A) Caso W = σ z val (R)? T(W) =? Soluzione # 1: T(W) = T(R)/2 Soluzione # 2: T(W) = T(R)/3 61 62 Soluzione # 3: stima i valori nel range Esempio R Z Min=1 V(R,Z)=10 W= σ z 15 (R) Max=20 Equivalentemente: f V(R,Z) = frazione di valori distinti T(W) = [f V(Z,R)] T(R) = f T(R) V(Z,R) f = 20-15+1 = 6 20-1+1 20 (frazione del range) T(W) = f T(R) 63 64

Stima della dimensione per W = R1 R2 Sia X = attributi di R1 Y = attributi di R2 Caso 2 W = R1 R2 X Y = A R1 A B C R2 A D Caso 1 X Y = Lo stesso di R1 x R2 Assunzione: V(R1,A) V(R2,A) e ogni valore per A in R1 e in R2 V(R2,A) V(R1,A) e ogni valore per A in R2 e in R1 inclusione dell insieme dei valori 65 66 Calcolare T(W) quando V(R1,A) V(R2,A) R1 A B C R2 A D Prendi 1 tupla Match 1 tupla corrisponde a T(R2) tuple... V(R2,A) Quindi T(W) = T(R2) T(R1) V(R2, A) V(R1,A) V(R2,A) T(W) = T(R2) T(R1) V(R2,A) V(R2,A) V(R1,A) T(W) = T(R2) T(R1) V(R1,A) [A e l attributo comune] 67 68

In generale W = R1 R2 In tutti i casi: T(W) = T(R2) T(R1) max{ V(R1,A), V(R2,A) } S(W) = S(R1) + S(R2) - S(A) dimensione dell attributo A 69 70 Join naturale con attributi di join multipli R1(x,y1,y2), R2(y1,y2,z) W=R1 R2 Date due tuple r1 di R1 ed r2 di R2, qual e la probabilita che facciano join? Prob che r1 ed r2 abbiano uguale y1 =1/max{V(R1,y1),V(R2,y1)} Prob che r1 ed r2 abbiano uguale y2 =1/max{V(R1,y2),V(R2,y2)} Attributi di join multipli Quindi, di T(R1)*T(R2) tuple, quelle che fanno match sono T(R1)T(R2) max{v(r1,y1),v(r2,y1)}max{v(r1,y2),v(r2,y2)} 71 72

Esempio W=R(a,b,c) R.b=S.d and R.c=S.e S(d,e,f) T(R)=1000 T(S)=2000 V(R,b)=20 V(S,d)=50 V(R,c)=100 V(S,e)=50 T(W)=1000*2000/(50*100)=400 Stima delle dimensioni S=σA=a B=b (R) T(S)=T(R)/(V(R,A)xV(R,B)) Q=σA=a OR B=b (R) T(Q)=min{T(R),T(σA=a(R))+T(σB=b (R))} 73 74 Nota: per espressioni complesse, e necessario calcolare i risultati T,S,V intermedi. Es. W = [σa=a (R1) ] R2 relazione U T(U) = T(R1)/V(R1,A) S(U) = S(R1) Quanto vale V (U, *)? Per stimare Vs Es., U = σa=a (R1) supponendo che R1 abbia gli attributi A,B,C,D V(U, A) =1 V(U, B) = V(R1, B) V(U, C) = V(R1, C) V(U, D) = V(R1, D) 75 76

Per i join U = R1(A,B) R2(A,C) V(U,A) = min { V(R1, A), V(R2, A) } V(U,B) = V(R1, B) V(U,C) = V(R2, C) Esempio: Z = R1(A,B) R2(B,C) R3(C,D) R1 T(R1) = 1000 V(R1,A)=50 V(R1,B)=100 R2 T(R2) = 2000 V(R2,B)=200 V(R2,C)=300 R3 T(R3) = 3000 V(R3,C)=90 V(R3,D)=500 [assunzione conservazione dell insieme dei valori ] 77 78 Risultato parziale: U = R1 R2 T(U) = 1000 2000 V(U,A) = 50 200 V(U,B) = 100 V(U,C) = 300 Z = U R3 T(Z) = 1000 2000 3000=100.000 200 300 V(Z,A) = 50 V(Z,B) = 100 V(Z,C) = 90 V(Z,D) = 500 79 80

Altro ordine W=R2(B,C) R3(C,D) T(W)=2000x3000 300 V(W,B)=200 Z=R1 W T(Z)= 2000x3000x1000=100.000 300x200 Osservazione Le assunzioni di inclusione dell insieme dei valori e di conservazione dell insieme dei valori garantiscono che la stima della dimensione del risultato sia la stessa indipendentemente dall ordine con cui si eseguono i join 81 82 Altro esempio R(a,b,c) S(b,c,d) U(b,e) T(R)=1000 T(S)=2000 T(U)=5000 V(R,a)=100 V(R,b)=20 V(S,b)=50 V(U,b)=200 V(R,c)=200 V(S,c)=100 V(S,d)=400 V(U,e)=500 Altro esempio W=R S T(W)=1000x2000 50x200 V(W,b)=20 Z=W U T(U)=1000x2000x5000=5000 50x200x200 83 84

In generale Se abbiamo un join di n relazioni S=R1 R2... Rn T(S) si ottiene moltiplicando il numero di tuple in ogni relazione e, per ciascun attributo A, dividendo per tutti i V(Ri,A) tranne il piu piccolo Se A appare una volta sola, V(Ri,A) non compare nella formula Si veda il libro per la dimostrazione Da non dimenticare: le statistiche devono essere mantenute aggiornate 85 86 Schema Stima del costo di una query Stima della dimensione dell output fatto! Stima del # di IOs prossimo Generare e confrontare i piani 87