Elaborazione delle Query

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

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

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

INTRODUZIONE AL 2 TEST IN ITINERE. a.a

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

Structured Query Language

Basi di Dati: Corso di laboratorio

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

Algebra relazionale: operazioni

Lezione 5. Algebra relazionale

Cognome Nome Matricola Ordin.

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: Corso di laboratorio

Lezione 6. Algebra e Calcolo Relazionale

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

Corso di Basi di Dati

ALGEBRA RELAZIONALE. DB -Algebra Relazionale 1

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;

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

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'

Consideriamo lo schema relazionale

Corso sul linguaggio SQL

CALCOLO DEL COSTO DI JOIN. costo di join 1

IL MODELLO RELAZIONALE

Modulo 2 Data Base 3

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

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

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

Il modello relazionale

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

Basi di dati. Gabriella Trucco

Progettazione Fisica

Uso degli indici nell ottimizzazione delle query SQL

Ricorsione in SQL-99

Basi di dati - Laboratorio

Parte III. L algebra relazionale

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

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

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

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

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. Esercitazione SQL. 17 novembre 2011

CALCOLO DEL COSTO DI JOIN. costo di join 1

Basi di dati I Prova di autovalutazione 1 novembre 2016 Soluzioni

Basi di dati e Relazioni

Join (naturale) Join. Join. Join

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

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

Schema Del DB Operazionale TELEFONATE

Basi di Dati: Elementi

Databases. Esercizi su Query SQL

Elena Baralis 2007 Politecnico di Torino 1

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

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

Basi di Dati: Strutture ed Algoritmi Appelli del 2001

Fondamenti di Teoria delle Basi di Dati

Aggiornamenti e Interrogazioni

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

COMPITO DI SISTEMI INFORMATIVI/BASI DI DATI II 17 giugno 2008 Compito A (Tot. 16) Tempo: 2h

Basi di Dati. Concetti Avanzati

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

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

ALGEBRA RELAZIONALE. Linguaggi di interrogazione relazionale

Prova Scritta di Basi di Dati

Parte III L algebra relazionale

Scopo. Informatica. Sistema informativo. Sistema informatico

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:

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

Esercitazione ER e Algebra Relazionale

Sistemi di Elaborazione delle Informazioni

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

Basi di dati II Esame 16 febbraio 2016 Compito A Tempo a disposizione: due ore e quindici minuti.

Attributi e domini. per brevità scriviamo: A per {A}; XY per X Y (pertanto A 1 A 2 A 3 denota

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

Esercitazione 1 Algebra relazionale

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

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

Transcript:

Elaborazione delle Query Leggere il capitolo 16 del Garcia- Molina et al. Lucidi derivati da quelli di Hector Garcia- Molina 1

Query Processing Come passare da una query ad un piano per eseguirla? 2

Esempio Select B,D From R,S Where R.A = c S.E = 2 R.C=S.C 3

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 4

Come eseguire la query? - Esegui prodotto cartesiano - Seleziona le tuple - Fai una proiezione Un idea 5

RXS R.A R.B R.C S.C S.D S.E a 1 10 10 x 2 a 1 10 20 y 2.. Trotvata! C 2 10 10 x 2.. 6

Algebra relazionale- puo essere usata per descrivere i piani. Es: Piano I Π B,D σ R.A= c S.E=2 R.C=S.C X R S Oppure: Π B,D [ σ R.A= c S.E=2 R.C = S.C (RXS)] 7

Un altra idea: Piano II Π B,D Join naturale σ R.A = c σ S.E = 2 R S 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 9

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 10

R S A B C A= c C C D E I1 a 1 10 10 x 2 b 1 20 <c,2,10> <10,x,2> 20 y 2 c 2 10 verifica=2? 30 z 2 d 2 35 output: <2,x> 40 x 1 e 3 45 50 y 3 prossima tupla: <c,7,15> I2 11

Ottimizzazione delle query Piano descritto con l algebra relazionale=logical query plan Piano descritto con operatori fisici=physical query plan 12

SQL query parse parse tree converti logical query plan applica leggi l.q.p. migliorato ima la dimensione del risultato l.q.p. +dimensioni considera i piani fisici statistiche {(P1,C1), (P2,C2)...} risposta esegui Pi scegli il migliore stima i costi physical query plans {P1,P2,..} 13

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 ); (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 ΠmovieTitle σ StarsIn <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 StarsIn Πname σbirthdate LIKE %1960 MovieStar Trasformando la condizione IN 17

Esempio: Piano logico migliorato ΠmovieTitle starname=name StarsIn Πname σbirthdate LIKE %1960 MovieStar Un miglioramento sul piano precedente 18

Esempio: del risultato Stima la dimensione Abbiamo bisogno della dimensione StarsIn Π σ MovieStar 19

Esempio: Un piano fisico memoria,... Hash join Parametri: ordine del join, dimensione della Scan SEQ Index scan Parametri: Condizione della select,... StarsIn MovieStar 20

Esempio: Stima i costi L.Q.P. P1 P2. Pn C1 C2. Cn Scegli il migliore! 21

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 22

Ottimizzazione dell algebra relazionale Regole di trasformazione che preservano l equivalenza 23

Regole: join naturale & prodotto cartesiano & unione & intersezione R S = S R (R S) T = R (S T) 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 25

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 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} 29

Regole σ,,- combinati: σp(r S) = σp(r) σp(s) σp(r - S) = σp(r) - S = σp(r) - σp(s) 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) = σ q (R S) = [σ p (R)] S R [σ q (S)] σ m (R S) = σ m (R) σ m (S) 31

Regole: σ + (continua) combinati Alcune regole possono essere derivate: σp q (R S) = σp q m (R S) = σpvq (R S) = 32

σp q (R S) = [σp (R)] [σq (S)] σp q m (R S) =σm[(σp R) (σq S)]=[σm(σp(R)) σpvq (R S) = σm(σq (S))] [(σp R) S] S [R (σq S)] Solo se (σp R) S e R (σq S) sono insiemi e non bag 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 σq (S) 35

Regole: proiezione Siano: X = insieme di attributi Y = insieme di attributi XY = X Y πxy (R) = πx [πy (R)] 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) ]} 37

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) ]} 38

πxy {σp (R S)} = πxy {σp [πxz (R) πyz (S)]} z = z U {attributi usati in P} 39

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)]} 40

Normalmente: esegui le proiezioni prima possibile Esempio: R(A,B,C,D,E) x={e} P: (A=3) (B= cat ) πx {σp (R)} rispetto. πe {σp{πabe(r)}} 41

Ma se A e B hanno indici? B = cat A=3 ottenere i Interseca i puntatori per puntatori alle tuple richieste 42

In conclusione: Non sempre conviene anticipare le proiezioni 43

Regola per le selezioni Normalmente e buono anticipare le selezioni, cioe spingerle in basso nell albero 44

Eccezione StarsIn(title, year, starname) Movie(title,year,length, incolor,studioname, producerc#) CREATE VIEW MovieOf1996 AS SELECT * FROM Movie WHERE year=1996 45

Eccezione SELECT starname, studioname FROM MoviesOf1996 m JOIN StarsIn s ON m.title=s.title AND m.year=s.year ΠstarName,studioName σyear=1996 StarsIn Movie 46

Eccezione Si usa la regola σ 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 47 del join

Eccezione ΠstarName,studioName σ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 49

Stima del costo di un piano di query (1)Stima della dimensione dei risultati (2)Stima del numero di IOs 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 51

Esempio R A B C D A: stringa di 20 byte byte cat 1 10 a cat 1 20 b dog 1 30 a dog 1 40 c 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 B: intero di 4 byte C: data di 8 byte D: stringa di 5 52

Ipotesi: Stima del numero di Record impaccati blocchi Tutto lo spazio nei blocchi occupato da record (no strutture ausiliarie) B(R)=T(R)*S(R)/B Dove B e la dimensione in bytes del blocco 53

Stima della dimensione per W = R1 x R2 T(W) = S(W) = T(R1) T(R2) S(R1) + S(R2) 54

Stima della dimensione per W = σa=a (R) S(W) = S(R) T(W) =? 55

Esempio R V(R,A)=3 V(R,B)=1 A B C D V(R,C)=5cat 1 10 a V(R,D)=4cat 1 20 b dog 1 30 a 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 56

Assunzione: I valori per l attributo Z sono uniformemente distribuiti sui possibili V(R,Z) valori 57

Assunzione alternativa: I valori per l attributo Z sono uniformemente distribuiti sul dominio con DOM(R,Z) valori. 58

Esempio R alternativa A B C D DOM(R,A)=10 cat 1 10 a DOM(R,B)=10 cat 1 20 b dog 1 30 a DOM(R,C)=10 dog 1 40 c bat 1 50 d DOM(R,D)=10 Assunzione V(R,A)=3 V(R,B)=1 V(R,C)=5 V(R,D)=4 T(R) W = σz=val(r) T(W) = DOM(R,Z) 59

C=val T(W) = 5/10=0.5 B=val T(W)= 5/10=0.5 A=val T(W)= 5/10= 0.5 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) 61

Caso W = σ z val (R)? T(W) =? Soluzione # 1: T(W) = T(R)/2 Soluzione # 2: T(W) = T(R)/3 62

Soluzione # 3: stima i valori nel range Esempio R Z Min=1 Max=20 V(R,Z)=10 W= σ z 15 (R) f = 20-15+1 = 6 20-1+1 20 (frazione del range) T(W) = f T(R) 63

Equivalentemente: f V(R,Z) = frazione di valori distinti T(W) = [f V(Z,R)] T(R) V(Z,R) = f T(R) 64

Stima della dimensione per W = R1 R2 Sia X = attributi di R1 Y = attributi di R2 Caso 1 X Y = Lo stesso di R1 x R2 65

W = R1 R2 X Y = Caso 2 A R1 A B C R2 A D 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 66

alcolare 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) 67

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] 68

In generale W = R1 R2 T(W) = T(R2) T(R1) max{ V(R1,A), V(R2,A) } 69

In tutti i casi: S(W) = S(R1) + S(R2) - S(A) dimensione dell attributo A 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)} 71

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)} 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 73

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))} 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, *)? 75

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) 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) [assunzione conservazione dell insieme dei valori ] 77

Esempio: Z = R1(A,B) R2(B,C) R3(C,D) R1 R2 R3 T(R1) = 1000 V(R1,A)=50 V(R1,B)=100 T(R2) = 2000 V(R2,B)=200 V(R2,C)=300 T(R3) = 3000 V(R3,C)=90 V(R3,D)=500 78

Risultato parziale: U = R1 R2 T(U) = 1000 2000 V(U,A) = 50 200 V(U,B) = 100 V(U,C) = 300 79

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 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 81

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 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 83

Altro esempio W=R S T(W)=1000x2000 50x200 V(W,b)=20 Z=W U T(U)=1000x2000x5000=5000 50x200x200 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 85

Da non dimenticare: le statistiche devono essere mantenute aggiornate 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