La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Algoritmo di Query Optimization

Presentazioni simili


Presentazione sul tema: "Algoritmo di Query Optimization"— Transcript della presentazione:

1 Algoritmo di Query Optimization

2 Espressione Algebrica di Query
L’Algebra Relazionale può essere utilizzata come linguaggio per interrogare una base di dati. Giugno-Pulvirenti AA

3 Equivalenza di espressioni
Due espressioni sono equivalenti se producono lo stesso risultato qualunque sia l'istanza attuale della base di dati L'equivalenza è importante in pratica perché i DBMS cercano di eseguire espressioni equivalenti a quelle date, ma meno "costose" Giugno-Pulvirenti AA

4 Un'equivalenza importante
Push selection (se A è attributo di R2 ) SEL A=10 (R1 JOIN R2) = R1 JOIN SEL A=10 ( R2) Riduce in modo significativo la dimensione del risultato intermedio (e quindi il costo dell'operazione) Giugno-Pulvirenti AA

5 Giugno-Pulvirenti AA 2006-2007
Esempio di Query Consideriamo l’esempio del database degli studenti costituito dalle tre tabelle Studenti, Esami, Corsi. Supponiamo che vogliamo trovare tutti i professori che hanno dato a Mario Rossi piu’ di 27. ProfessoreNome=‘Mario Rossi’& Voto>27 (Studenti Esami  Corsi) Giugno-Pulvirenti AA

6 Giugno-Pulvirenti AA 2006-2007
Query Optimization La stessa query PNome=‘Mario Rossi’& Voto>27 (Studenti  Esami  Corsi) può essere espressa come P (Nome=‘Mario Rossi’Studenti  ( Voto>27 Esami  Corsi)) Che risulta essere molto più efficiente! Giugno-Pulvirenti AA

7 Regole per la query optimization
Anticipare l’applicazione delle proiezioni e delle restrizioni rispetto al prodotto (e quindi alle giunzioni), in modo da ridurre la dimensione delle tabelle a cui applicare il prodotto (e le giunzioni). Le seguenti regole possono essere utilmente utilizzate per l’ottimizzazione di espressioni: Giugno-Pulvirenti AA

8 Regole sulla restrizione
Raggruppamento di restrizioni C(X) (C(Y)(E))=C(X)&C(Y)(E) Commutativita’ di  e  C(X)(Y(E))=Y(C(X)(E)) ,se XY; Y(C(X)(XY(E)))=Y(C(X)(E))se X  Y. Giugno-Pulvirenti AA

9 Restrizione e Prodotto
Anticipazione di  rispetto a . C(X)(E  F)= C(X)(E)  F, se X attr(E). C(X)&C(Y)(E  F)= C(X)(E)  C(Y)(F), se X attr(E), Y attr(F). C(X)&C(Y)&C(Z)(E  F)= C(Z)( C(X)(E)  C(Y)(F)), se X attr(E), Y attr(F), Z attr(E) , Z attr(F) Giugno-Pulvirenti AA

10 Regole per la proiezione
Raggruppamento di proiezioni. X(Y(E))= X(E) , se XY. Eliminazione di proiezioni superflue. X(E)=E , se X = attr.(E). Anticipazione della  rispetto a . XY(E  F)= X(E)  Y(F) , se Xattr(E), Yattr.(F). Giugno-Pulvirenti AA

11 Giugno-Pulvirenti AA 2006-2007
L’ALGORITMO Si applicano le seguenti tre regole (per anticipare la selezione) finché è possibile Si anticipa  rispetto a  usando la 2.a C(X)(Y(E))=Y(C(X)(E)) ,se XY; Si raggruppano le restrizioni usando la 1 C(X) (C(Y)(E))=C(X)&C(Y)(E). Si anticipa l’esecuzione di  su  usando la 3. Giugno-Pulvirenti AA

12 Anticipazione delle proiezioni
Si eliminano le proiezioni superflue usando la 5 X(E)=E , se X = attr.(E). . Si raggruppano le proiezioni mediante la regola 4 X(Y(E))= X(E) , se XY.. Si anticipa l’esecuzione delle proiezioni rispetto al prodotto usando ripetutamente la 2 [Commutativita’ di  e ] (quando E è un prodotto, da destra verso sinistra) e la 6 [Anticipazione della  rispetto a ]. Giugno-Pulvirenti AA

13 Giugno-Pulvirenti AA 2006-2007
Dato lo schema: impiegato(i_id, i_nome, eta, stipendio); dipartimento(d_id, d_nome, budget, manager_id); lavora(i_id, d_id, perc_tempo); Per ogni impiegato indicare il nome di tutti i suoi manager. Giugno-Pulvirenti AA

14 Giugno-Pulvirenti AA 2006-2007
Indicare il nome di tutti i dipartimenti con più di 10 impiegati. Giugno-Pulvirenti AA

15 Giugno-Pulvirenti AA 2006-2007
Nome ed età di tutti gli impiegati che lavorano sia in Amministrazione che in Contabilità (Nota che possono lavorare anche in altri dipartimenti oltre i due indicati). Giugno-Pulvirenti AA

16 Giugno-Pulvirenti AA 2006-2007
Nome di tutti i manager che lavorano in più di un dipartimento ed indicare il numero di dipartimenti per cui lavorano. Giugno-Pulvirenti AA

17 Giugno-Pulvirenti AA 2006-2007
Nome di tutti i dipendenti che lavorano solo per un dipartimento Giugno-Pulvirenti AA


Scaricare ppt "Algoritmo di Query Optimization"

Presentazioni simili


Annunci Google