Slide 15- 1
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 15 Algorithms for Query Processing and Optimization
Slide 15- 3
SQL → Relationel Algebra Slide 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 :
Sortering Slide 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
Slide Merge-Sort:
Eksempel på merge-sort Slide 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 = 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
Aloritmer til SELECT og JOIN Slide Hvordan kan DBMS’en udfører vores SELECT og JOIN operationer
Søgemetoder for simple selektioner Slide 15- 9
Søgemetoder for komplekse selektioner Slide
SQL - join Slide Behov for at lave forespørgsler der bruger data fra flere tabeller
Slide 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 )
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
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
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
Single loop join Slide 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 )
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.
Slide Sort merge JOIN : PROJEKTION
Slide Forenings mængde Fællesmængde Mængdedifferens (R-S)
Query optimering Slide 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
Slide 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'
Generelle transformations regler Slide
Generelle transformations regler Slide
Generelle transformations regler Slide
Hvordan gør vi så (Algoritme)? Slide
Eksempel Slide SELECT Lname FROM Employee, Works_on, Project Where Pname = ’Aquarius’ AND Pnumber=Pno AND Essn=Ssn AND Bdate > ’ ’ π Lname (σ Pname= ’’Aguaris’ AND Bdate >’ ’ AND Pnumber=Pno AND Essn=Ssn ((EMPLOYEE X WORKS_ON) X PROJECT)))
Slide SELECT Lname FROM Employee, Works_on, Project Where Pname = ’Aquarius’ AND Pnumber=Pno AND Essn=Ssn AND Bdate > ’ ’
Slide SELECT Lname FROM Employee, Works_on, Project Where Pname = ’Aquarius’ AND Pnumber=Pno AND Essn=Ssn AND Bdate > ’ ’
Eksempel ExecutionPlan Slide
Slide