Spørsmålskompilering del 1

Like dokumenter
Spørsmålskompilering del 1

Spørsmålskompilering

Spørsmålskompilering. Basert på foiler av Hector Garcia-Molina

Spørsmålskompilering. Basert på foiler av Hector Garcia-Molina

Spørsmålskompilering del 2

Spørsmålskompilering del 2

Effektiv eksekvering av spørsmål

INF1300 Introduksjon til databaser

Effektiv eksekvering av spørsmål

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

Relasjonsalgebraen. Algebra

Effektiv eksekvering av spørsmål

Relasjonsalgebra Kopi av lysark om relasjonsalgebra. Vi går igjennom denne for å lage et matematisk fundament for forståelsen av hvordan

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk INF Ellen Munthe-Kaas

INF1300 Relasjonsalgebra. Et matematisk fundament for å forstå SQL-setninger

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk. INF Ellen Munthe-Kaas

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk. INF Ragnar Normann

INF1300 Relasjonsalgebra og SQL, mengder og bager. Lysark for forelesning v. 2.1

UNIVERSITETET RELASJONSALGEBRA. Regning g med relasjoner. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

Effektiv eksekvering av spørsmål

Andre sett obligatoriske oppgaver i INF3100 V2012

UNIVERSITETET. Relasjonsalgebra. INF Ragnhild Kobro Runde

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk INF Ellen Munthe-Kaas

UNIVERSITETET I OSLO. Oppskriftsbok. FDer og MVDer Relasjonsalgebra. Institutt for Informatikk. INF3100 Ellen Munthe-Kaas 1

Andre sett obligatoriske oppgaver iinf3100v2011

Oppskriftsbok. FDer og MVDer - oversikt: se s. 3 Relasjonsalgebra - oversikt: se s. 45

Effektiv eksekvering av spørsmål

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO SQL. Structured Query Language. (The intergalactic dataspeak) Institutt for Informatikk. INF Ragnar Normann 1

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO SQL. Structured Query Language. (The intergalactic dataspeak) Institutt for Informatikk. INF Ellen Munthe-Kaas 1

Databaser. Relasjonsmodellen 2 Læreboka: Kap. 2 Relasjonsmodellen

UNIVERSITETET I OSLO SQL. Structured Query Language. (forts.) Institutt for Informatikk. INF Ragnar Normann 1

UNIVERSITETET I OSLO SQL. Structured Query Language. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

UNIVERSITETET I OSLO SQL. Structured Query Language. (The intergalactic dataspeak) INF Ellen Munthe-Kaas 1. Institutt for Informatikk

UNIVERSITETET I OSLO SQL. Structured Query Language. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

UNIVERSITETET I OSLO SQL. Structured Query Language. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

Repetisjonsforelesning, SQL og utover

Alle attributter har NULL som mulig verdi. mulige verdier for integer: NULL, 0, 1, 2, 3...

Andre sett obligatoriske oppgaver i INF3100 V2013

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO SQL. Structured Query Language. (forts.) Institutt for Informatikk. INF Ellen Munthe-Kaas 1

Oppgave: Finn navn og tittel på alle som har arbeidet på prosjektet «Vintersalg»

Andre sett obligatoriske oppgaver i INF3100 V2009

DBS18 - Strategier for Query-prosessering

Andre sett obligatoriske oppgaver i INF3100 V2008

UNIVERSITETET SQL. Structured Query Language. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

UNIVERSITETET SQL. Structured Query Language (forts.) Institutt for Informatikk. INF Ellen Munthe-Kaas 1

INF1300 Det meste av resten av SQL. Utleggsark v. 2.0

UNIVERSITETET I OSLO SQL. Structured Query Language. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

Relasjonsalgebra. Hva?

SQL Structured Query Language. Repetisjon av select spørringer Nestede select spørringer Mengdeoperasjoner Views Flere operatorer

Andre sett obligatoriske oppgaver i INF3100 V2010

INF1300 Det meste av resten av

SQL. SQL-standarder. Flere standarder: ANSI SQL SQL2 (SQL-92) SQL3 (SQL-99) = SQL2 + objekt-relasjonelle egenskaper mm

UNIVERSITETET SQL-99. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

En lett innføring i foreninger (JOINs) i SQL

INF1300 Introduksjon til databaser

INF3100 V2018 Obligatorisk oppgave nr. 2

UNIVERSITETET I OSLO. Indeksering. Hvordan finne et element raskt? Institutt for Informatikk. INF Ellen Munthe-Kaas

UNIVERSITETET. Indeksering. Hvordan finne et element raskt? Vera Goebel, Ellen Munthe-Kaas

1. SQL spørringer mot flere tabeller

Repetisjon: Normalformer og SQL

Integritetsregler i SQL. Primærnøkler

Relasjonsdatabasedesign

SQL Structured Query Language

Integritetsregler i SQL

Relasjonsdatabasedesign

UNIVERSITETET. Indeksering. Konvensjonelle indekser B-trær og hashing Flerdimensjonale indekser Hashliknende strukturer.

Indeksering. Konvensjonelle indekser B-trær og hashing Flerdimensjonale indekser Treliknende strukturer Hashliknende strukturer Bitmapindekser

SQL Structured Query Language

Join. Intuitivt: Skjøte sammen to relasjoner. Intuitivt: 1. Beregn R S 2. Velg ut de tuplene som tilfredsstiller joinbetingelsen C

Databaser fra et logikkperspektiv

Relasjonsdatabasedesign

INF1300 Introduksjon til databaser

SQL: Integritetsregler, triggere og views

Indeksering. Konvensjonelle indekser B-trær og hashing Flerdimensjonale indekser Trestrukturer Hashliknende strukturer Bitmapindekser

Integritetsregler i SQL

Løsningsskisse til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Relasjoner terminologi

INF1300 Introduksjon til databaser

SELECT DISTINCT Fornavn, Etternavn, Programtittel FROM Program P, Medvirkende M, Deltagelse D. SELECT Tilgjengelighet FROM Program

Relasjonsdatabasedesign

Sensorveiledning for IN2090 og INF desember :30 18:30 (4 timer)

Relasjonsdatabasedesign

Metaspråket for å beskrive grammatikk

Andre sett obligatoriske oppgaver i INF3100/INF4100 V2007

Relasjonsdatabasedesign

IN3020 V2019 Obligatorisk oppgave nr. 1

UNIVERSITETET. Relasjonsdatabasedesign

Relasjoner terminologi. Kopi av lysark fra forelesningen 13. oktober. Legges ut inntil notatet som samler alt om SQL kommer...

Relasjonsdatabasedesign

SQL Structured Query Language

Relasjonsdatabasedesign

Mengdelære INF1800 LOGIKK OG BEREGNBARHET FORELESNING 2: MENGDELÆRE. Læreboken. Mengder. Definisjon (Mengde) Roger Antonsen

Relasjonsdatabasedesign

INF1300 SQL Structured Query Language del 1. Stoff som blir/ble forelest i oktober 2013

INF1800 LOGIKK OG BEREGNBARHET

Normalformer utover 4NF (ikke pensum)

Relasjonsdatabasedesign. Ekstramateriale: Normalformer utover 4NF (ikke pensum)

Transkript:

UNIVERSITETET I OSLO Spørsmålskompilering del 1 Parsering Logiske spørreplaner uttrykt i relasjonsalgebra Optimalisering ved hjelp av algebraiske lover Institutt for Informatikk INF3100-11.4.2016 - Ellen Munthe-Kaas 1

Oversikt: Fra spørring til resultat SQL-spørring parsere parseringstre konvertere logiske spørreplaner (LSPer) anvende lover forbedrede LSPer estimere resultatstørrelser statistikk resultat utføre FSP i velge beste {(LSP 1, str 1 ), } {(FSP 1, kost 1 ), } vurdere fysiske planer estimere kostnader fysiske spørreplaner (FSPer) INF3100-11.4.2016 - Ellen Munthe-Kaas 2

Eksempel SELECT B,C,Y FROM R,S WHERE W = X AND A = 3 AND Z = a ; Relasjon R A B C... W 1 z 1... 4 2 c 6... 2 3 r 8... 7 4 n 9... 4 2 j 0... 3 3 t 5... 9 7 e 3... 3 8 f 5... 8 1 h 7... 5 Relasjon S X Y Z 1 a a 2 f c 3 t b 4 b b 7 k a 6 e a 7 g c 8 i b 9 e c INF3100-11.4.2016 - Ellen Munthe-Kaas 3

R SELECT B,C,Y Eksempel (forts.) FROM R,S WHERE W=X AND A=3 AND Z= a idé 1 ta kartesisk produkt, velg tupler, projiser attributter π B,C,Y (σ W=X A=3 Z= a (R S)) π B,C,Y σ... S Relasjon R A B C... W 1 z 1... 4 2 c 6... 2 3 r 8... 7 4 n 9... 4 2 j 0... 3 3 t 5... 9 7 e 3... 3 8 f 5... 8 1 h 7... 5 Resultat B C Y r 8 k Relasjon S X Y Z 1 a a 2 f c 3 t b 4 b b 7 k a 6 e a 7 g c 8 i b 9 e c Merk: #attributter = #R-attributter + #S-attributter #tupler = #R-tupler * #S-tupler A B C... W X Y Z 1 z 1... 4 1 a a............... 2 f c........................ 2 c 6... 2 1 a a............... 2 f c........................ 3 r 8... 7 1 a a............... 2 f c........................ 3 r 8... 7 7 k a 4 n 9... 4 1 a a............... 2 f c..................... v 2 j 0... 3 1 a a............... 2 c c........................ 3 t 5... 9 1 a a............... 2 f c........................ 7 e 3... 3 1 a a............... 2 f c..................... v..................... 4...

SELECT B,C,Y Eksempel (forts.) FROM R,S WHERE W=X AND A=3 AND Z= a idé 2 velg tupler, gjør equijoin, projiser attributter π B,C,Y ((σ A=3 (R)) W=X (σ Z= a (S))) A B C... W 3 r 8... 7 3 t 5... 9 X Y Z 1 a a 7 k a 6 e a π B,C,Y Relasjon R Relasjon S W=X σ A=3 σ Z= a R S A B C... W 1 z 1... 4 2 c 6... 2 3 r 8... 7 4 n 9... 4 2 j 0... 3 3 t 5... 9 7 e 3... 3 8 f 5... 8 1 h 7... 5 A B C... W X Y Z 3 r 8... 7 7 k a B C Y r 8 k X Y Z 1 a a 2 f c 3 t b 4 b b 7 k a 6 e a 7 g c 8 i b 9 e c

Eksempel (forts.) idé 3 bruk indekser på R.A og S.X bruk indeksen på R.A for å velge tupler med R.A = 3 bruk indeksen på S.X for å finne tupler som matcher R.W plukk ut S-tupler hvor Z = a join tupler fra R og S som matcher projiser B,C,Y Relasjon R SELECT B,C,Y FROM R,S WHERE W=X AND A=3 AND Z= a A B C... W X Y Z 3 r 8... 7 7 k a B C Y r 8 k Relasjon S 3 I R.A A B C... W 1 z 1... 4 2 c 6... 2 3 r 8... 7 4 n 9... 4 2 j 0... 3 3 t 5... 9 7 e 3... 3 8 f 5... 8 1 h 7... 5 A B C... W 3 r 8... 7 3 t 5... 9 X Y Z 7 k a 7 g c 9 e c 7,9 I S.X X Y Z 1 a a 2 f c 3 t b 4 b b 7 k a 6 e a 7 g c 8 i b 9 e c

parsere Parsering konvertere anvende lover utføre estimere resultatstørrelser velge beste vurdere fysiske planer estimere kostnader INF3100-11.4.2016 - Ellen Munthe-Kaas 7

Parsering Mål: konvertere en SQL-spørring til et parseringstre <Query> <SFW> <SelList> <Attribute> <FromList> <Relation> SELECT title FROM StarsIn WHERE... Hver node i et parseringstre er enten: et atom leksikalsk element som nøkkelord, navn, konstanter, parenteser og operatorer (løvnode) en syntaktisk kategori del av en spørring (indre node) INF3100-11.4.2016 - Ellen Munthe-Kaas 8

Enkel grammatikk Query: <Query> ::= <SFW> <Query> ::= ( <Query> ) en komplett grammatikk vil også inneholde operatorer som UNION, JOIN, regel 2 brukes typisk i subspørringer Select-From-Where: <SFW> ::= SELECT <SelList> FROM <FromList> WHERE <Condition> en komplett grammatikk må inkludere GROUP BY, HAVING, ORDER BY, Select-list: <SelList> ::= <Attribute> <SelList> ::= <Attribute>, <SelList> en komplett grammatikk må inkludere uttrykk og aggregatfunksjoner From-list: <FromList> ::= <Relation> <FromList> ::= <Relation>, <FromList> en komplett grammatikk må inkludere aliasing og uttrykk som R JOIN S INF3100-11.4.2016 - Ellen Munthe-Kaas 9

Enkel grammatikk (forts.) Condition: <Condition> ::= <Condition> AND <Condition> <Condition> ::= <Tuple> IN <Query> <Condition> ::= <Attribute> = <Attribute> <Condition> ::= <Attribute> LIKE <Pattern> en komplett grammatikk må inkludere operatorer som OR, NOT, osv. og alle andre sammenligningsoperatorer Tuple: <Tuple> ::= <Attribute> en komplett grammatikk må inkludere tupler med flere attributter, Grunnleggende syntaktiske kategorier som <Relation>, <Attribute>, <Pattern>, osv. har ikke egne regler, men erstattes av et navn eller en tekststreng INF3100-11.4.2016 - Ellen Munthe-Kaas 10

Enkel grammatikk: eksempel Finn filmer med skuespillere født i 1960: SELECT title FROM StarsIn WHERE starname IN ( SELECT name FROM MovieStar WHERE birthdate LIKE %1960 ); INF3100-11.4.2016 - Ellen Munthe-Kaas 11 INF3100-24.3.2015 - Ellen Munthe-Kaas

Enkel grammatikk: eksempel Finn filmer med skuespillere født i 1960: SELECT title FROM StarsIn WHERE starname IN ( SELECT name FROM MovieStar WHERE birthdate LIKE %1960 ); <Query> <SFW> SELECT <SelList> FROM <FromList> WHERE <Condition> <Attribute> <Relation> <Tuple> IN <Query> title StarsIn <Attribute> ( <Query> ) starname <SFW> SELECT <SelList> FROM <FromList> WHERE <Condition> <Attribute> <Relation> <Attribute> LIKE <Pattern> name MovieStar birthdate %1960 INF3100-11.4.2016 - Ellen Munthe-Kaas 12

Preprosessor Sjekker at spørringen er semantisk korrekt: relasjoner hver relasjon i FROM må være en relasjon eller et view i skjemaet hvor spørringen utføres. Hvert view må erstattes av et parseringstre. attributter hvert attributt må finnes i en av relasjonene i det aktuelle skopet i spørringen. typer all bruk av attributter må være i henhold til angitte typer. INF3100-11.4.2016 - Ellen Munthe-Kaas 13

parsere konvertere Generering av logisk spørreplan anvende lover utføre estimere resultatstørrelser velge beste vurdere fysiske planer estimere kostnader INF3100-11.4.2016 - Ellen Munthe-Kaas 14

Konvertering av SFW SELECT <SelList> FROM <Fromlist> WHERE <Condition> erstatt relasjonene i <FromList> med produktet ( ) av alle relasjonene dette produktet er argumentet til en seleksjon σ C hvor C tilsvarer <Condition> denne seleksjonen er argumentet til en projeksjon π L hvor L er listen av attributter i <SelList> INF3100-11.4.2016 - Ellen Munthe-Kaas 15

Konvertering av SFW eksempel SELECT name FROM MovieStar WHERE birthdate LIKE %1960 produktet av relasjonene i <FromList> gjør seleksjon basert på <Condition> <Query> projiser på attributtene i <SelList> <SFW> SELECT <SelList> FROM <FromList> WHERE <Condition> <Attribute> <Relation> <Attribute> LIKE <Pattern> π name name MovieStar birthdate %1960 σ birthdate LIKE %1960 MovieStar INF3100-11.4.2016 - Ellen Munthe-Kaas 16

Konvertering av subspørringer For subspørringer bruker vi en hjelpeoperator to-arguments seleksjon σ(r,t) der T representerer subspørringen (dvs. det som svarer til <Condition>). R σ <Condition> Videre behandling avhenger av type subspørring. Vi skal se på t IN S som et eksempel: t IN S 1. Erstatt <Condition> med treet for S. Hvis S kan inneholde duplikater, må vi legge til en δ operator på toppen. σ C 2. Erstatt to-arguments seleksjon med ett-arguments seleksjon σ C, hvor C sammenligner hver komponent i t med det tilsvarende attributtet i S. R δ 3. La σ C ha produktet av R og S som argument. S INF3100-11.4.2016 - Ellen Munthe-Kaas 17

Konvertering av subspørringer - eksempel SELECT title FROM StarsIn WHERE starname IN (SELECT name FROM MovieStar WHERE birtdate LIKE %1960 ) produktet av relasjonene i <FromList> gjør seleksjon basert på <Condition>, representert ved to-arguments seleksjon projiser på attributtene i <SelList> erstatt foreløpig subspørringen med dens parseringstre π title <Query> <SFW> σ SELECT <SelList> FROM <FromList> WHERE <Condition> StarsIn <Condition> <Tuple> IN <Query> π name <Attribute> title <Relation> StarsIn <Tuple> IN <Attribute> starname <Query> σ birthdate LIKE %1960 MovieStar INF3100-11.4.2016 - Ellen Munthe-Kaas 18

Eksempel (forts.) SELECT title FROM StarsIn WHERE starname IN (...) erstatt <Condition> med treet for subspørringen erstatt to-arguments seleksjon med ett-arguments seleksjon σ C, hvor C er starname = name la σ C ha produktet av StarsIn og MovieStar som argument π title σ starname σ = name π title σ starname = name StarsIn <Condition> <Tuple> IN π name StarsIn π name <Attribute> σ birthdate LIKE %1960 σ birthdate LIKE %1960 starname MovieStar MovieStar INF3100-11.4.2016 - Ellen Munthe-Kaas 19

Mer om konvertering Konvertering av subspørringer blir mer komplisert hvis subspørringen er relatert til verdier definert utenfor skopet til subspørringen vi må da lage en relasjon med ekstraattributter for sammenligning med de eksterne attributtene de ekstra attributtene fjernes senere ved hjelp av projeksjoner i tillegg må alle duplikattupler fjernes INF3100-11.4.2016 - Ellen Munthe-Kaas 20

parsere konvertere Forbedring av logiske spørreplaner ved hjelp av algebraiske lover anvende lover utføre estimere resultatstørrelser velge beste vurdere fysiske planer estimere kostnader INF3100-11.4.2016 - Ellen Munthe-Kaas 21

Kommutativitet og assosiativitet En operator ω er kommutativ hvis rekkefølgen til argumentene ikke har noen betydning: x ω y = y ω x En operator er assosiativ hvis grupperingen av argumentene ikke har noen betydning: x ω (y ω z) = (x ω y) ω z INF3100-11.4.2016 - Ellen Munthe-Kaas 22

Algebraiske lover produkt og join Naturlig join og produkt er kommutative og assosiative: R S = S R; R (S T) = (R S) T R S = S R; Hva med thetajoin? Kommutativ: R S = S R R (S T) = (R S) T Ikke alltid assosiativ. Eksempel: Gitt relasjonene R(a,b), S(b,c), T(c,d). Da er (R R.b < S.b S) a < d T R R.b < S.b (S a < d T) INF3100-11.4.2016 - Ellen Munthe-Kaas 23

Rekkefølgen på produkt og join Har rekkefølgen og grupperingen av et produkt eller en join noe å si i forhold til effektivitet? Hvis bare en av relasjonene får plass i minnet, bør denne være første argument en-passoperasjon som reduserer antall disk-io Hvis produkt eller join av to av relasjonene gir en temporær relasjon som får plass i minnet, bør disse joinene tas først for å spare både minneplass og disk-io Temporære relasjoner (mellomresultater) bør være så små som mulig for å spare minneplass Hvis vi kan estimere (ved hjelp av statistikk) antall tupler som skal joines, kan vi spare mange operasjoner ved å joine de relasjonene som gir færrest tupler først (gjelder ikke for produkt) INF3100-11.4.2016 - Ellen Munthe-Kaas 24

Algebraiske lover union og snitt Union og snitt er kommutative og assosiative: R S = S R; R (S T) = (R S) T R S = S R; R (S T) = (R S) T Merk: Andre lover kan være ulike for set og bag, f.eks. distribusjon av snitt over union: R S (S S T) = (R S S) S (R S T) R B (S B T) (R B S) B (R B T) INF3100-11.4.2016 - Ellen Munthe-Kaas 25

Algebraiske lover seleksjon Seleksjon er en svært viktig operator for optimalisering reduserer antall tupler (størrelsen på relasjonen) generell regel: dytt seleksjoner så langt ned i treet som mulig Betingelser med AND og OR kan splittes: σ a AND b (R) = σ a (σ b (R)) σ a OR b (R) = (σ a (R)) S (σ b (R)) der R er en mengde (Splitting av OR fungerer bare når R er en mengde: Hvis R er en bag og begge betingelsene er oppfylt, vil bagunion inkludere et tuppel to ganger - en gang i hver seleksjon.) Rekkefølgen av påfølgende seleksjoner har ingen betydning for resultatmengden: σ a (σ b (R)) = σ b (σ a (R)) INF3100-11.4.2016 - Ellen Munthe-Kaas 26

Dytting av seleksjon Hvis seleksjon dyttes nedover i treet må den dyttes til begge argumentene for union: σ a (R S) = σ a (R) σ a (S) kartesisk produkt: σ a (R S) = σ a (R) σ a (S) må den dyttes til første argument, valgfritt til andre argument for differanse: σ a (R - S) = σ a (R) - S = σ a (R) - σ a (S) kan den dyttes til et eller begge argumentene for snitt: σ a (R S) = σ a (R) σ a (S) = R σ a (S) = σ a (R) S join: σ a (R S) = σ a (R) σ a (S) = R σ a (S) = σ a (R) S thetajoin: σ a (R b S) = σ a (R) b σ a (S) = R b σ a (S) = σ a (R) b S INF3100-11.4.2016 - Ellen Munthe-Kaas 27

Dytting av seleksjon eksempel Eksempel: hvert attributt er 1 byte σ A=2 (R S) join: sammenlign 4 * 4 elementer = 16 operasjoner mellomlagre relasjon: R S gir 52 bytes seleksjon: sjekk hvert enkelt tuppel: 2 operasjoner σ A=2 (R) S seleksjon: sjekk hvert enkelt tuppel i R: 4 operasjoner mellomlagre relasjon: σ A=2 (R) gir 24 bytes join: sammenlign 1 * 4 elementer = 4 operasjoner Relasjon R A B C... X 1 z 1... 4 2 c 6... 2 3 r 8... 7 4 n 9... 4 Relasjon R S A B C... X Y Z 2 c 6... 2 f c 3 r 8... 7 g c Relasjon σ A=2 (R) A B C... X 2 c 6... 2 Relasjon S X Y Z 2 f c 3 t b 7 g c 9 e c INF3100-11.4.2016 - Ellen Munthe-Kaas 28

Dytting av seleksjon oppover i treet Noen ganger er det nyttig å dytte seleksjon den andre veien, dvs. oppover i treet, ved å bruke loven σ a (R S) = R σ a (S) bakvendt. Eksempel: StarsIn(title, year, starname); CREATE VIEW Movies96 AS SELECT * FROM Movies WHERE year = 1996; Movies(title, year, studio ) SELECT starname, studio FROM Movies96 NATURAL JOIN StarsIn; π starname, studio π starname, studio σ year = 1996 π starname, studio σ year = 1996 Movies96 StarsIn σ year = 1996 σ year = 1996 Movies Movies StarsIn INF3100-11.4.2016 - Ellen Munthe-Kaas Movies StarsIn 29

Algebraiske lover projeksjon I Projeksjon kan dyttes gjennom join og produkt (dvs. nye projeksjoner kan introduseres) så lenge vi ikke fjerner attributter som brukes lenger oppe i treet: π L (R S) = π L (π M (R) π N (S)) hvis M inneholder joinattributtene og det av L som er i R N inneholder joinattributtene og det av L som er i S π L (R S) = π L (π M (R) π N (S)) hvis M inneholder de av attributtene i C og L som er i R N inneholder de av attributtene i C og L som er i S π L (R S) = π L (π M (R) π N (S)) hvis M inneholder de av attributtene i L som er i R N inneholder de av attributtene i L som er i S INF3100-11.4.2016 - Ellen Munthe-Kaas 30

Algebraiske lover projeksjon II Projeksjon kan dyttes gjennom bagunion: π L (R S) = π L (R) π L (S) Merk: Tilsvarende regel gjelder ikke for mengdeunion, mengdesnitt, bagsnitt, mengdedifferanse eller bagdifferanse fordi projeksjon kan endre multiplisiteten til tuplene: Hvis R er en mengde, er ikke nødvendigvis π L (R) en mengde Hvis R er en bag og et tuppel t forekommer k ganger i R, så kan projeksjonen av t på L forekomme mer enn k ganger i π L (R). INF3100-11.4.2016 - Ellen Munthe-Kaas 31

Algebraiske lover projeksjon III Projeksjon kan dyttes gjennom seleksjon (nye projeksjoner introduseres) så lenge vi ikke fjerner attributter som brukes lenger oppe i treet: π L (σ C (R)) = π L (σ C (π M (R))) hvis M inneholder attributtene i C og L Merk at hvis R har en indeks på noen av attributtene i seleksjonsbetingelsen C, så vil ikke denne indeksen kunne benyttes under seleksjonen hvis vi først gjør en projeksjon på M. INF3100-11.4.2016 - Ellen Munthe-Kaas 32

Algebraiske lover join, produkt, seleksjon, projeksjon To viktige lover som følger fra definisjonen av join: σ C (R S) = R S π L (σ C (R S)) = R S hvis C sammenligner hvert par av tupler fra R og S med samme navn L = alle attributtene fra R og S (uten duplikater) INF3100-11.4.2016 - Ellen Munthe-Kaas 33

Eksempel π L (σ R.a = S.a (R S)) vs. R S R(a,b,c,d,e,, k), T(R) = 10.000, S(a,l,m,n,o,,z), T(S) = 100 hvert attributt er 1 byte, a er kandidatnøkkel i både R og S antar at alle tupler i S finner en match i R, dvs. 100 tupler i resultatet π L (σ C (R S)): produkt: kombiner 10.000 * 100 elementer = 1.000.000 operasjoner mellomlagre relasjon R S = 1.000.000 * (11 + 16) = 27.000.000 bytes seleksjon: sjekk hvert enkelt tuppel: 1.000.000 operasjoner mellomlagre relasjon σ R.a = S.a (R S) = 100 * 27 = 2700 bytes projeksjon: sjekk hvert enkelt tuppel: 100 operasjoner R S: join: sjekk 10.000 * 100 elementer = 1.000.000 operasjoner INF3100-11.4.2016 - Ellen Munthe-Kaas 34

Algebraiske lover - duplikateliminasjon Duplikateliminasjon kan redusere størrelsen på temporære relasjoner ved å dyttes gjennom kartesisk produkt: δ(r S) = δ(r) δ(s) join: δ(r S) = δ(r) δ(s) thetajoin: δ(r S) = δ(r) δ(s) seleksjon: δ(σ C (R)) = σ C (δ(r)) bag-snitt: δ(r S) = δ(r) δ(s) = δ(r) S = R δ(s) Merk: duplikateliminasjon kan ikke dyttes gjennom set-operasjoner bag-union og -differanse projeksjoner INF3100-11.4.2016 - Ellen Munthe-Kaas 35

Algebraiske lover - grupperingsoperatoren Kan ikke gi generelle lover INF3100-11.4.2016 - Ellen Munthe-Kaas 36

Forbedring av logiske spørreplaner De vanligste optimaliseringene er: Dytt seleksjoner så langt ned som mulig. Hvis seleksjonsbetingelsen består av flere deler, splitt i flere seleksjoner og dytt hver enkelt så langt ned i treet som mulig. Dytt projeksjoner så langt ned som mulig. Kombiner seleksjon og kartesisk produkt til en join av passende type Duplikateliminasjoner kan noen ganger fjernes Men ikke ødelegg utnyttelse av indekser: Dytting av projeksjon forbi en seleksjon kan ødelegge for bruk av indekser ved seleksjonen INF3100-11.4.2016 - Ellen Munthe-Kaas 37