Elaborazione delle Query

Documenti analoghi
Ottimizzazione di interrogazioni. Ottimizzazione di interrogazioni. Ottimizzazione di interrogazioni. Ottimizzazione di interrogazioni

CAPITOLO V. DATABASE: Il modello relazionale

TEORIA RELAZIONALE: INTRODUZIONE

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

DATABASE PER IL WEB. Programmazione Web 1

Operazioni sui database

Normalizzazione. Relazionali

CORSO DI LAUREA IN INGEGNERIA.

L architettura di un DBMS

Decomposizioni di uno schema, Decomposizioni che preservano i dati (loss-less joins) Prof.ssa Rosalba Giugno

Indici ad albero. Albero Binario di Ricerca

Ottimizzazione delle interrogazioni (parte I)

Per visualizzare e immettere i dati in una tabella è possibile utilizzare le maschere;

BASI DI DATI LINGUAGGI PER BASI DI DATI

Ricorsione in SQL-99. Introduzione. Idea di base

(anno accademico )

User Tools: DataBase Manager

Elementi di Algebra Relazionale

Il Modello Relazionale

Fondamenti di Teoria delle Basi di Dati

Per visualizzare e immettere i dati in una tabella è possibile utilizzare le maschere;

Corso di Basi di Dati

Il BACKUP è disponibile in

ALGEBRA RELAZIONALE RIEPILOGO

Algebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE

Esame Basi di Dati. 21 Gennaio 2013

Rette e piani con le matrici e i determinanti

S::= Aa bb bc A::= 1B 0 B::= 0A 1 C::= Cc d Si scriva un riconoscitore in Prolog del linguaggio generato da G. Suggerimento: si elimini la ricorsione

Uso delle variabili di alias. SQL slide aggiuntive. Interrogazione 25. Interrogazione 26

Esercitazioni di Reti Logiche. Lezione 2 Algebra Booleana e Porte Logiche. Zeynep KIZILTAN zkiziltan@deis.unibo.it

RELAZIONI BINARIE. Proprietà delle relazioni Data una relazione R, definita in un insieme non vuoto U, si hanno le seguenti proprietà :

Secondo Compitino di Basi di Dati

Data warehousing con SQL Server

Basi di dati. L Algebra Relazionale. K. Donno - L Algebra Relazionale

Introduzione all Algebra Relazionale

SQL prima parte 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 2011/12

DATABASE RELAZIONALI

CALCOLO DEL COSTO DI ACCESSO AI DATI

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

Estensioni del linguaggio SQL per interrogazioni OLAP

Introduzione. Elenco telefonico Conti correnti Catalogo libri di una biblioteca Orario dei treni aerei

Esempio di database relazionale con l utilizzo del prodotto MySQL

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.

Teoria degli insiemi

RETTE, PIANI, SFERE, CIRCONFERENZE

ITCS Erasmo da Rotterdam. Anno Scolastico 2014/2015. CLASSE 4^ M Costruzioni, ambiente e territorio

TUTELA LA TUA PASSIONE TUTELA DELLA BICICLETTA

Esercitazione Simulazione Compito

Prova Scritta di Basi di Dati

REALIZZAZIONE DEI DBMS

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

Morfologia e Image Processing

(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, = 1, 431 0, = 0, 862 0, = 1, 792 0, = 1, 448 0, = 0, 896

MATEMATICA GENERALE Prova d esame del 4 giugno FILA A

Il linguaggio SQL: viste e tabelle derivate

Basi di dati. Una visione d insieme. Classificazione. Linguaggi di interrogazione. Algebra relazionale. selezione σ

Matlab: Strutture di Controllo. Informatica B

Appello di BD del Corso di laurea in Informatica del 9/1/2007 Compito e soluzioni

Il linguaggio SQL: viste e tabelle derivate. Versione elettronica: SQLd-viste.pdf

Statistica associativa ramo infortuni Anni 2009 e 2010

LICEO SCIENTIFICO "LEONARDO DA VINCI" - RC PROGRAMMA DI INFORMATICA A.S. 2014/15 - CLASSE: I Q - Indirizzo Scienze applicate Prof Miritello Rita

Normalizzazione. Definizione

4. Proiezioni del piano e dello spazio

b) Costruire direttamente le relazioni e poi correggere quelle che presentano anomalie

SQL/OLAP. Estensioni OLAP in SQL

Join in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a

Basi di Dati. Esercitazione SQL. Ing. Paolo Cappellari

MAPPE DI KARNAUGH. Nei capitoli precedenti si è visto che è possibile associare un circuito elettronico o elettrico ad una funzione logica.

Informatica. Rappresentazione dei numeri Numerazione binaria

COGNOME MATRICOLA. Con vincoli di integrita referenziale: INTERVENTO.CodTecnico à TECNICO.Codice INTERVENTO.MatCaldaia à CALDAIA.

Teoria della Progettazione delle Basi di Dati Relazionali

Sintesi di reti logiche multilivello. Sommario. Motivazioni. Sommario. M. Favalli

Il linguaggio SQL: query innestate

Calcolo Relazionale Basi di dati e sistemi informativi 1. Calcolo Relazionale. Angelo Montanari

Archivi e Basi di Dati

RELAZIONI E FUNZIONI. Per ricordare. Figura 1. Figura 2. Figura 3. Figura 4

Algebra Relazionale. algebra relazionale

3. Sia g(x) = 4. Si calcoli l area del triangolo mistilineo ROS, ove l arco RS appartiene al grafico di f(x) o, indifferentemente, di g(x).

Modelli relazionali. Esistono diversi modi di modellare un database. Il modello piu' usato al momento e' il modello relazionale

Structured Query Language parte 1

Esercizi per il corso di Algoritmi e Strutture Dati

Raccolta degli Scritti d Esame di ANALISI MATEMATICA U.D. 1 assegnati nei Corsi di Laurea di Fisica, Fisica Applicata, Matematica

I sistemi di numerazione

È fatta male? Perché? Come si può correggere?

Modello Relazionale. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto san giovanni

Prova Scritta di Basi di Dati

SQL IL LINGUAGGIO DI INTERROGAZIONE

Carta di credito standard. Carta di credito business. Esercitazione 12 maggio 2016

Correttezza. Esempi di TRC. AR è esprimibile tramite TRC. AR è esprimibile tramite TRC. AR è esprimibile tramite TRC

Integrali doppi - Esercizi svolti

Fa riferimento ad una famiglia di linguaggi dichiarativi, basati sul calcolo dei predicati del primo ordine

Excel basi e funzioni

Università degli Studi di Milano. Esercizi Corso SIT. Basi di dati

Esame di Stato Istituto Tecnico Industriale Soluzione della Seconda Prova Indirizzo: INFORMATICA Tema: INFORMATICA Anno Scolastico:

Esprimere in algebra (ottimizzata), calcolo relazionale la seguente query:

Gestione dei File in C

PROBLEMI DI MASSIMO E MINIMO ESEMPI INTRODUTTIVI ELEMENTARI. PROBLEMA 1: Tra i rettangoli di perimetro 20 cm, determina quello di area massima.

4 Dispense di Matematica per il biennio dell Istituto I.S.I.S. Gaetano Filangieri di Frattamaggiore EQUAZIONI FRATTE E SISTEMI DI EQUAZIONI

Utilizzando Microsoft Access. Si crea la tabella Anagrafica degli alunni,le Materie e i voti si mettono alcuni campi

DBMS (Data Base Management System)

Transcript:

Elaborazione delle Query Leggere le sezioni 8.1 e 8.2 di Riguzzi et al. Sistemi Infomativi 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? Un idea - Esegui prodotto cartesiano - Seleziona le tuple - Fai una proiezione 5

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

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

Un altra idea: Piano II B,D s R.A = c s S.E = 2 Join naturale R S 8

R S A B C s (R) s(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 A B C I1 A= c S C D E 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> C 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 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 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: relazionale Generazione dell algebra movietitle s StarsIn <condition> <tuple> IN name <attribute> sbirthdate LIKE %1960 starname MovieStar Il s 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 sstarname=name StarsIn name sbirthdate LIKE %1960 MovieStar Trasformando la condizione IN 17

Esempio: Piano logico migliorato movietitle starname=name StarsIn name sbirthdate LIKE %1960 MovieStar Un miglioramento sul piano precedente 18

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

Esempio: Un piano fisico Hash join Parametri: ordine del join, dimensione della memoria,... StarsIn Index scan MovieStar Parametri: Condizione della select,... 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 S S T R 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 s p1 p2 (R) = s p1vp2 (R) = s p1 [ s p2 (R)]=s p2 [ s p1 (R)] [ s p1 (R)] S [ 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

sp1vp2 (R) = sp1(r) S sp2(r) Esempio: R={a,a,b,b,b,c} P1 soddisfatto da a,b; P2 soddisfatto da b,c sp1vp2 (R) = {a,a,b,b,b,c} sp1(r) = {a,a,b,b,b} sp2(r) = {b,b,b,c} sp1(r) S sp2 (R)={a,b,c} sp1(r) B sp2 (R) ={a,a,b,b,b,b,b,b,c} 29

Regole s,,- combinati: sp(r S) = sp(r) sp(s) sp(r - S) = sp(r) - S = sp(r) - sp(s) 30

Regole: s + combinati Siano p = predicati con solo attr. di R q = predicati con solo attr. di S m = predicati con solo attr. di R,S s p (R S) = [s p (R)] S s q (R S) = s m (R S) = R s m (R) [s q (S)] s m (S) 31

Regole: s + combinati (continua) Alcune regole possono essere derivate: sp q (R S) = sp q m (R S) = spvq (R S) = 32

sp q (R S) = [sp (R)] [sq (S)] sp q m (R S) =sm[(sp R) (sq S)]=[sm(sp(R)) spvq (R S) = sm(sq (S))] [(sp R) S] S [R (sq S)] Solo se (sp R) S e R (sq S) sono insiemi e non bag 33

--> Derivazione per la prima: sp q (R S) = sp [sq (R S) ] = sp [ R sq (S) ] = [sp (R)] [sq (S)] 34

Regole per s, combinati con X sp (R X S) = sp (R) X S sq (R X S) = R X sq (S) 35

Regole: proiezione Siano: X = insieme di attributi Y = insieme di attributi XY = X Y pxy (R) = px [py (R)] 36

Regole: p,s combinate Sia x = sottoinsieme degli attributi di R z = attributi nel predicato P (sottoinsieme degli attributi di R) pxz px[sp (R) ] = px {sp [ px (R) ]} 37

Regole: p, combinati Sia x = sottoinsieme degli attributi di R y = sottoinsieme degli attributi di S z = intersezione degli attributi di R,S pxy (R S) = pxy{[pxz (R) ] [pyz (S) ]} 38

pxy {sp (R S)} = pxy {sp [pxz (R) pyz (S)]} z = z U {attributi usati in P} 39

Quali sono buone trasformazioni? sp1 p2 (R) sp1 [sp2 (R)] sp (R S) [sp (R)] S R S S R px [sp (R)] px {sp [pxz (R)]} 40

Normalmente: esegui le proiezioni prima possibile Esempio: R(A,B,C,D,E) x={e} P: (A=3) (B= cat ) px {sp (R)} rispetto. pe {sp{pabe(r)}} 41

Ma se A e B hanno indici? B = cat A=3 Interseca i puntatori per ottenere i 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 syear=1996 StarsIn Movie 46

Si usa la regola Eccezione s p (R S) = 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

Eccezione starname,studioname syear=1996 syear=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 cat 1 10 a cat 1 20 b dog 1 30 a dog 1 40 c bat 1 50 d A: stringa di 20 byte B: intero di 4 byte C: data di 8 byte D: stringa di 5 byte T(R) = 5 S(R) = 37 V(R,A) = 3 V(R,C) = 5 V(R,B) = 1 V(R,D) = 4 52

Stima del numero di blocchi Ipotesi: Record impaccati 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) = T(R1) T(R2) S(W) = S(R1) + S(R2) 54

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

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 V(R,A)=3 V(R,B)=1 V(R,C)=5 V(R,D)=4 W = sz=val(r) W = sa=val(r) T(W) = T(R)/V(R,Z) 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 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 W = sz=val(r) T(W) = T(R) 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 = s 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 W= s z 15 (R) Max=20 f = 20-15+1 = 6 20-1+1 20 (frazione del range) T(W) = f T(R) 63

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 64

Caso 2 W = R1 R2 X Y = 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 65

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) 66

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

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

In tutti i casi: S(W) = S(R1) + S(R2) - S(A) dimensione dell attributo A 69

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

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

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 72

Stima delle dimensioni S=sA=a B=b (R) T(S)=T(R)/(V(R,A)xV(R,B)) Q=sA=a OR B=b (R) T(Q)=min{T(R),T(sA=a(R))+T(sB=b (R))} 73

Nota: per espressioni complesse, e necessario calcolare i risultati T,S,V intermedi. Es. W = [sa=a (R1) ] R2 relazione U T(U) = T(R1)/V(R1,A) S(U) = S(R1) Quanto vale V (U, *)? 74

Per stimare Vs Es., U = sa=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

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

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 77

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

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

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 80

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

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 82

Altro esempio W=R S T(W)=1000x2000 50x200 V(W,b)=20 Z=W U T(U)=1000x2000x5000=5000 50x200x200 83

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 84

Da non dimenticare: le statistiche devono essere mantenute aggiornate 85

Schema Stima del costo di una query Stima della dimensione dell output fatto! Stima del # di IOs prossimo Generare e confrontare i piani 86