Download præsentationen
Præsentation er lastning. Vent venligst
Offentliggjort afChristian Bro Redigeret for ca. et år siden
1
Slide 15- 1
2
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 15 Algorithms for Query Processing and Optimization
3
Slide 15- 3
4
SQL → Relationel Algebra Slide 15- 4 SELECT Lname,Fname FROM EMPLOYEE WHERE Salary >( SELECT max(Salary) FROM EMPLOYEE WHERE Dno = 5) SELECT max(Salary) FROM EMPLOYEE WHERE Dno = 5 SELECT Lname,Fname FROM EMPLOYEE WHERE Salary >c → ExecutionplanExecutionplan :
5
Sortering Slide 15- 5 Sortering er en af de primære algoritmer der bruges i SQL Querys. F.eks. Ved: Order BY Join Union Intersection Distinct En effektiv sorterings algoritme til store filer er SORT-MERGE algoritmen
6
Slide 15- 6 Merge-Sort:
7
Eksempel på merge-sort Slide 15- 7 Tag de 13 ruder fra et kortspil: Sæt i =1 Sæt j = 13 (antag at hvert kort fylder en blok) Sæt k = 3 (Blokstørrelsen) m = (13/3) = 5 Sort fasen resulterer i 5 sorterede bunker Merge fasen: j = 1 p = log (k-1) m = log 2 5 = log 2 2 3 = 3 antal gennemløb j= m = 5 1.While løkke: n = 1 q = (j/(k-1)) = (5/2) = 3 MERGE j = q = 3 i = i + 1 = 2 2.While løkke: n = 1 q = (j/(k-1)) = (3/2) = 2 MERGE j = q = 2 i = i + 1 = 3 3.While løkke: n = 1 q = (j/(k-1)) = (2/2) = 1 MERGE j = q = 1 i = i + 1 = 3 SLUT
8
Aloritmer til SELECT og JOIN Slide 15- 8 Hvordan kan DBMS’en udfører vores SELECT og JOIN operationer
9
Søgemetoder for simple selektioner Slide 15- 9
10
Søgemetoder for komplekse selektioner Slide 15- 10
11
SQL - join Slide 15- 11 Behov for at lave forespørgsler der bruger data fra flere tabeller
12
Slide 15- 12 SQL - join Generel join (kobling af to relationer) Haves to relationer R 1 (A 1,A 2, A 3,…,A n ) og R 2 (B 1,B 2, B 3,…,B m ) join skrives som Q R 1 [X] R 2 Resultatet af en JOIN er en relation Q med n + m attributter Q (A 1,A 2, A 3,…,A n, B 1,B 2, B 3,…,B m )
13
Nestede loop join Simpel metode: For (hver række i tabel1){ for (hver række i tabel2){ concatener tabel1Række med tabel2Række }} Udfør selektion på den dannede tabel
14
Nestede loop join Nestede-loop Join FOR (hver række i tabel1){ FOR (hver række i tabel2){ Hvis join betingelser matcher SÅ concatener tabel1Række med tabel2Række ELLERS ingenting }} Bedre end den første
15
Nestede loop join Bedre: FOR (hver page i tabel1) { FOR (hver række i tabel1-page){ FOR (hver række i tabel2-page){ Hvis join betingelser matcher SÅ concatener tabel1Række med tabel2Række ELLERS ingenting }}}} Udnytter bufferen, dvs færre læseoperationer
16
Single loop join Slide 15- 16 Hvis der findes et index på en af join betingelserne kan følgende algoritme bruges FOR (hver række i tabel1){ Slå op i indeks for tabel2 Hvis tupel eksisterer SÅ concatener tabel1Række med tabel2Række ELLERS ingenting }} (den kan selvfølgelig optimeres )
17
SQL - join Sort-merge join Først sorteres tabellerne, for siden at flettes Hash join Der beregnes en hash værdi for hver enkelt række i de 2 tabeller.
18
Slide 15- 18 Sort merge JOIN : PROJEKTION
19
Slide 15- 19 Forenings mængde Fællesmængde Mængdedifferens (R-S)
20
Query optimering Slide 15- 20 Hvad sker der så når der er en kombination af join, select og projektion ? Som f.eks.: SELECT P.Pnumber, P.Dnum, E.Lname, E.Address, E.Bdate FROM PROJECT AS P, DEPARTMENT AS D, EMPLOYEE AS E WHERE P.Dnum= D.Dnumber AND D.Mgrssn = E.Ssn AND P.Plocation = 'Stafford' Svar : Queryen splittes op
21
Slide 15- 21 SELECT P.Pnumber, P.Dnum, E.Lname, E.Address, E.Bdate FROM PROJECT AS P, DEPARTMENT AS D, EMPLOYEE AS E WHERE P.Dnum= D.Dnumber AND D.Mgrssn = E.Ssn AND P.Plocation = 'Stafford'
22
Generelle transformations regler Slide 15- 22
23
Generelle transformations regler Slide 15- 23
24
Generelle transformations regler Slide 15- 24
25
Hvordan gør vi så (Algoritme)? Slide 15- 25
26
Eksempel Slide 15- 26 SELECT Lname FROM Employee, Works_on, Project Where Pname = ’Aquarius’ AND Pnumber=Pno AND Essn=Ssn AND Bdate > ’1957-12-31’ π Lname (σ Pname= ’’Aguaris’ AND Bdate >’1957-12-31’ AND Pnumber=Pno AND Essn=Ssn ((EMPLOYEE X WORKS_ON) X PROJECT)))
27
Slide 15- 27 SELECT Lname FROM Employee, Works_on, Project Where Pname = ’Aquarius’ AND Pnumber=Pno AND Essn=Ssn AND Bdate > ’1957-12-31’
28
Slide 15- 28 SELECT Lname FROM Employee, Works_on, Project Where Pname = ’Aquarius’ AND Pnumber=Pno AND Essn=Ssn AND Bdate > ’1957-12-31’
29
Eksempel ExecutionPlan Slide 15- 29
30
Slide 15- 30
Lignende præsentationer
© 2024 SlidePlayer.dk Inc.
All rights reserved.