1 chapter 18 query processing and optimization. 16-118-2 query processing and optimization scanner:...

99
1 Chapter 18 Chapter 18 Query Processing and Optimization

Upload: evelyn-holt

Post on 18-Jan-2016

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

1

Chapter 18Chapter 18

Query Processing and Optimization

Page 2: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-1 18-2

Query Processing and Query Processing and OptimizationOptimization

Scanner: identify language components. keywords, attribute, relation namesParser : check query systemValidation: check attributes & relationsQuery tree (query graph) : internal representationExecution strategy: planQuery optimization : choose a strategy(reasonably efficient strategy)

Page 3: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-2 18-3

Figure 18.1 Typical steps when Figure 18.1 Typical steps when processingprocessing a high-level query a high-level query

Page 4: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

18-2-1 18-4

Translating SQL Queries into Translating SQL Queries into Relational AlgebraRelational Algebra

Query optimizer: choose an execution plan for each block– Uncorrelated nested query– Correlated nested query

SELECT LNAME, FNAMEFROM EMPLOYEEWHERE SALARY > C

(SELECT MAX (SALARY) FROM EMPLOYEE WHERE DNO = 5 )

ΠLNAME, FNAME (σSALARY > C (EMPLOYEE))

FMAX SALARY (σDNO = 5(EMPLOYEE))

Query block

Page 5: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

18-2-2 18-5

External SortingExternal SortingSort-merge strategySort-merge strategy

⑴ The Sorting phase Runs of file are read into main memory Runs are sorted using an internal sorting alg

orithm Runs are written back to disk as temporary s

orted subfiles nR : number of initial runs b : number of file blocks nB : available buffer space nnR R : :

Example: nB : 5 blocks, b: 1024 blocks nB =

= 205 runs

)(

Bnb

5

1024

Page 6: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

18-2-3 18-6

External SortingExternal SortingSort-merge strategy (Cont.)Sort-merge strategy (Cont.)

⑵ Merging phase Sorted runs are merged during one or more passses.

ddM M : degree of merging (d: degree of merging (dM M –way merging)–way merging) number of runs that can be merged together in each pass

ddM M = min ( ( n= min ( ( nB-1B-1), n), nRR)) number of passes = number of passes = ┌ ┐┌ ┐

Rd nM

log

Page 7: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

18-2-3 18-7

Example: (2 * b + 2 * ) dM = 4 ( 4-way merging)

bbMd

log

External SortingExternal SortingSort-merge strategy (Cont.)Sort-merge strategy (Cont.)

1 111 1…

4 4 1…..

16 13…..

64 61…..

205

205

52

13

4

1

2

3

4

Page 8: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

18-2-4 18-8

Page 9: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

18-2-4 18-9

Page 10: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

Clustering IndexClustering IndexRecords of a file are Records of a file are

physically ordered on physically ordered on a nonkey field.a nonkey field.clustering fieldclustering field

Page 11: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

Reserve a whole block for each value of clustering field

Page 12: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-3 18-12

Basic Algorithms for Executing Basic Algorithms for Executing Query OperationsQuery Operations

Implementing SELECT(OP1) σSSN=12345689 (EMPLOYEE)

equality comparison on key attribute(OP2) σDNUMBER > 5 (DEPARMENT)

nonequality comparison on key attribute(OP3) σDNO=5 (EMPLOYEE)

equality comparison on non key attribute(OP4) σDNO=5 AND SALARY >30000 AND SEX=F(EMPLOYEE)

conjunctive condition(OP5) σESSN=123456789 AND DNO=10 (WORKS_ON)

conjunctive condition and composite key

Page 13: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-4 18-13

Search Methods for SelectionSearch Methods for Selectionfile scans / index scansfile scans / index scans

S1. Linear Search (brute force)S2. Binary Search

SSN=123456789 (OP1) ordering attribute for EMPLOYEE

S3. Use primary index or hash key (single record) SSN=123456789 (OP1) Primary index or hash key

S4. Use primary index (multiple records) DNUMBER>5 (OP2) primary index

S5. Use clustering index (multiple records) DNO=5 (OP3) clustering index

•Locate•Find proceeding subsequent

Page 14: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-5 18-14

Search Methods for Search Methods for Selection (Cont.)Selection (Cont.)

file scans / index scansfile scans / index scans

S6. Use secondary (B+_tree) index

S7. Conjunctive Selection There does exist a simple condition that permits use of S2-S6. DNO=5 AND SALARY > 30000 AND SEX=F (OP4)

S8. Conjunction Selection using Composite index ESSN=123456789 AND DNO=10 (OP5)

S9. Conjunctive Selection by intersection of record pointers

Page 15: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-6 18-15

COND1 COND1 ANDAND COND2 COND2 ANDAND … …AND AND CONDNCONDNMore than one of attributes involved in More than one of attributes involved in

conditions that have access pathconditions that have access path

Choose the access path1. Retrieve the fewest records2. In the most efficient way

selectivity=

estimates of selectivities =(1) key attribute

(2) nonkey attribute where i : # of listing values for attribute in r(n)

records of # total

condition thesatisfying records of #

)(

1

Rr

i

1)(

)(

Rri

Rr

Page 16: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-7 18-16

(OP 4’) Disjunctive Condition

σσDNO=5 OR SALARY>30000 OR SEX=F DNO=5 OR SALARY>30000 OR SEX=F (EMPLOYEE)(EMPLOYEE)

Union the records that satisfy the individual conditions

(union record pointers)

Page 17: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-8 18-17

Implementing JoinImplementing Join

(OP 6) EMPLOYEE DNO=DNUMBER DEPARTMENT

(OP 7) DEPARTMENT MGRSSN=SSN EMPLOYEE

J1J1 Nested (inner-outer) loop (brute force)For t ∈ r[R] retrieve ∀s from S test t[A] = s[B]

Theta Join ‧ Equi Join ‧ Natural Join

‧ Two-way Join Multiway Join

R A=BS

Page 18: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-8 18-18

J2J2 Use access structure to retrieve matching record(s)

an index exists for one of two join attributes. (B of S)

1. Retrieve ∀ t ∈ r(R)2. Use access structure to retrieve matchi

ng records s from S such that s[B] = t[A]

Implementing Join (Cont.)Implementing Join (Cont.)

Single loop

Page 19: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-9 18-19

Implementing Join (Cont.)Implementing Join (Cont.)

J3J3 Sort-Merge Join Records of R and S are physically

sorted (ordered) by A and B. ( see 16-10a)

Page 20: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-9 18-20

Implementing Join (Cont.)Implementing Join (Cont.)

J4J4 Hash-Join Records of R and S are both hashed to t

he same hash file, using the same hashing function on A and B.

1) A single pass through the file with few records hashes its records to the hash file buchet.

2) A single pass through the other file then hashes each of its records to the appropriate buchet, where the record is combined with all matching records from R.

partitioningphase

probingphase

Page 21: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

18-9-1 18-21

Buffer Space on Join Performance Buffer Space on Join Performance

(OP 6) EMPLOYEE ⋈ DNO = DNUMBER DEPARTMENT

( ( J1 J1 ) nested-loop approach) nested-loop approachnnBB = 7 blocks (buffers) = 7 blocks (buffers)

DEPARTMENTDEPARTMENTrrDD =50 records b =50 records bDD = 10 disk = 10 disk blocksblocks

EMPLOYEEEMPLOYEErrEE =5000 records b =5000 records bE E = 2000 disk = 2000 disk blocks blocks

Outer loop file: nB- 2 blocksInner loop file: 1 blockResult file: 1 block

Page 22: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

18-19-1/2 18-22

Buffer Space on Join Performance (Cont.)Buffer Space on Join Performance (Cont.)

1) EMPLOYEE used for outer loop

of blocks accessed for outer file: bE

of times (nB- 2) blocks of outer

file are

loaded :

of blocks accessed for inner file:

)( 2B

E

nb

)( 2B

ED nbb

accessesblock

bnbb DBEE

6000

)10)52000((2000

))(( 2

Page 23: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

18-9-2 18-23

Buffer Space on Join Performance Buffer Space on Join Performance (Cont.)(Cont.)

2) DEPARTMENT used for outer loop

accessesblock

bnbb EBDD

4010

)2000)510((10

))(( 2

bRES: result file of join operation

Page 24: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

18-9-3 18-24

Join Selection Factor on join Join Selection Factor on join performanceperformance

The percentage of records in a file will be joined with

records in the other file(OP7) DEPARTMENT ⋈MGRSSN=SSN EMPLOYEE

Assume secondary indexes exist on SSN of EMPLOYEE and MGRSSN of DEPARTMENT

XSSN = 4 XMGRSSN=2

50 records 5000 records

4950 will not be joined

Page 25: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

18-9-3 18-25

Join Selection Factor on join Join Selection Factor on join performance (Cont.)performance (Cont.)

1) Retrieve each EMPLOYEE record and then use the index on MGRSSN of DEPARTMENT

accessesblock

Xrb MGRSSNRE

17000

350002000))1((

Page 26: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

18-9-4 18-26

Join Selection Factor on join performance Join Selection Factor on join performance (Cont.)(Cont.)

2) Retrieve each DEPARTMENT record and then uses the index on SSN of EMPLOYEE

3) Sort merge join J3 bE + bD + bE log2 bE + bD log2 bD

accessesblock

Xrb SSNDD

260

)550(10))1((

•Smaller file•The file that has a match for every record

merge sort

Page 27: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

18-9-5 18-27

Partition Hash JoinPartition Hash Join

1) Partitioning phase: two iterations

R ⋈ A=B S

M: minimum number of in-memory buffers

R is partitioned into R1,R2,…,RM

S is partitioned into S1,S2,…,SM

by using the same hash function

whenever the in-memory buffer for a partition gets filed, its contents are appended to a disk subfile

2 * ( bR+bS)(read+write)

Page 28: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

18-9-5 18-28

Partition Hash Join (Cont.)Partition Hash Join (Cont.)

2) Joining or probing phase: M iterationsDuring iteration i, the two partitions Ri and Si are joined.

bR + bS : read

3 × ( bR + bS ) + bRES

Page 29: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-10 18-29

Figure 18.3(a) T← R ⋈ A=B S

Sort-mergeSort-merge

Page 30: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-10 18-30

Figure 18.3(b) T← Π <attribute list> (R)

Alternative hashing

Page 31: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-11 18-31

Figure 18.3(c) T← R S∪

Page 32: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-11 18-32

Figure 18.3(d) T← R∩S

Page 33: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-11 18-33

Figure 18.3(e) T← R- S

Page 34: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-12 18-34

Implementing PROJECTImplementing PROJECT

ΠΠ<attribute list> <attribute list> (R) = R’(R) = R’ Key ∈ <attribute list>

|R|=|R’| Key ∉ <attribute list>

|R|= |R’| Eliminate duplicate

tuples see Figure 18.3b (18-

30)

Page 35: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-12 18-35

Implementing Set OperationImplementing Set Operation

UNION (see 18-31 Figure 18.3c)INTERSECTION (see 18-32

Figure18.3d)SET DIFFERENCE (see 18-33 Figure

18.3e)CARTESIAN PRODECT (modification)

Sort the two relations on the same attributes hashingAlternative

Page 36: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

18-12-1 18-36

Implementing aggregate Implementing aggregate functionsfunctions

MAX, MINSELECT MAX (SALARY)FROM EMPLOYEEan (ascending) index on SALARY

MAX: rightmost position in each index node from the root to the rightmost leafMIN: leftmost position is followed from the root to the leftmost leaf.

Page 37: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

18-12-1 18-37

Implementing aggregate functions Implementing aggregate functions (Cont.)(Cont.)

COUNT, AVERAGE, SUMdense index: there is an index entry for every record in the main file SELECT DNO, AVG (SALARY)SELECT DNO, AVG (SALARY) FROM EMPLOYEE FROM EMPLOYEE

GROUP BY- Sorting or hashing, clustering

index

Page 38: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

18-12-2 18-38

Figure 6.1 nondense index

Page 39: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

18-12-3 18-39

Figure 6.4 dense index

Page 40: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

18-12-4 18-40

SELECT LNAME, FNAME, DNAMEFROM ( EMPLOYEE LEFT OUTER JOIN

DEPARTMENT ON DNO = DNUMBER );

Outer Join Outer Join

left outer joinleft outer joinright outer joinright outer joinfull outer joinfull outer join

Page 41: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

18-12-4 18-41

Modification of join algorithmsModification of join algorithmsuse nested-loop join to compute left-use nested-loop join to compute left-

outer joinouter join

1. Left relation as the outer loop

2. If there are matching tuples in the other relation, the joined tuples are produced and saved in the result.

3. If no matching tuples are found, the tuple is included by padding with null values.

Page 42: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-13 18-42

Combining Operation for Query Combining Operation for Query ExecutionExecution

Reduce the number of temporary Reduce the number of temporary filesfiles

Using Heuristics in Query OptimizationUsing Heuristics in Query Optimization

Apply Apply SELECTSELECT and and PROJECTPROJECT before before applying applying JOINJOIN or other binary or other binary operations.operations.

Query Tree Notation Query Tree Notation (Relational Algebra Expression)(Relational Algebra Expression)

Query Graph NotationQuery Graph Notation(Relational Calculus Expressional)(Relational Calculus Expressional)

))()(( SR

Page 43: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

6-14 18-43

Heuristic Optimization of Query Heuristic Optimization of Query TreesTrees

Query Tree (relational algebra expression)

leaf node :relationsInternal node :relational algebra operationsexecution of query trees: post order traversal of tree

Page 44: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

6-14 18-44

Example Example Q2Q2

ΠPNUMBER, DNUM, LNAME, AADDRESS, BDATE

(((σPLOCATION=‘Stafford’ (PROJECT))⋈ DNUM=DNUMBER (DEPARTMENT))⋈ MGRSSN=SSN (EMPLOYEE)) ≡

SELECT PNUMBER, DNUM, LNAME, ADDRESS, BDATE

FROM PROJECT, DEPARTMENT, EMPLOYEEWHERE DNUM=DNUMBER AND

MGRSSN=SSN AND PLOCATION=‘Stafford’

For each project located in ‘stafford’ retrieve the project number, the controlling department number, and the department manager’s name.

Page 45: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

6-15 18-45

Figure 18.4Query tree corresponding to relational algebra expression Q2

Page 46: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

Canonica query tree forSELECT (a)FROM (b)WHERE (c)

(a)

(b)

(b)

PROJECT DEPARTMENT EMPLOYEESizes 100 50 150tuples 100 20 5000CARTESIAN PRODOCT, 100 × 20 × 5000 = 10 millions 300bytes

Page 47: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

6-16 18-47

Canonical query tree

SELECT LNAMEFROM EMPLOYEE, WORKS_ON, PROJECTWHERE PNAME=“Aquarius’ AND PNUMBER=PNO AND ESSN=SSN AND BDATE > ‘DEC-31-1957’

Page 48: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

6-16 18-48

Moving SELECT operations Moving SELECT operations down the query treedown the query tree

Page 49: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

6-17 18-49

Figure 18.5(c) Applying more

restrictive SELECT operation first

SELECT LNAMESELECT LNAMEFROM EMPOYEE, WORKS_ON, PROJECTFROM EMPOYEE, WORKS_ON, PROJECTWHERE PNAME=‘Aquarius’ ANDWHERE PNAME=‘Aquarius’ AND PUMBER=PNO AND PUMBER=PNO AND ESSN=SSN AND ESSN=SSN AND BDATE > ‘DEC-31-1987’ BDATE > ‘DEC-31-1987’

Page 50: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

6-17 18-50

Replacing CARTESIAN PRODUCT and SELECT with JOIN

Page 51: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

6-18 18-51

Moving PROJECT operations down

Transformation should keep equivalence

Page 52: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

6-19 18-52

General Transformation Rules for General Transformation Rules for Relational Algebra OperationsRelational Algebra Operations

1. Cascade of σσC1 AND C2 AND …AND Cn(R)≡σC1(σC2(…(σCn(R))…)

2. Commutativity of σ σ C1 (σ C2 (R)) ≡ σ C2 (σ C1 (R))

3. Cascade of ΠΠlist1(Πlist2 …(Πlistn(R))…) ≡ Πlist1(R)

4. Commuting σwith ΠΠA1, A2,…,An (σ C (R))≡ σ C (ΠA1, A2,…,An (R))C involves only A1,…,An

Page 53: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-20 18-53

5. Commutativity of ⋈ ( or ) R ⋈ C S ≡ S ⋈ C R

meaning

6. Commuting σwith ⋈ ( or )

σC (R ⋈ S) ≡(σC (R) ) ⋈ S

attributes in C involve only attributes

of R

σC (R ⋈ S) ≡(σC1 (R) ) ⋈ (σC2 (S) )

C1 (C2) involves only attribute of R(S)

General Transformation Rules for General Transformation Rules for Relational Algebra Operations Relational Algebra Operations

(Cont.)(Cont.)

Page 54: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-20 18-54

7. Commuting Π with ( or ⋈ ) ΠL( R ⋈ C S)≡(ΠA1,…,An (R)) ⋈ C (ΠB1,…,Bm (S)) L = { A1,…, An, B1,…, Bm } join condition C only involves L

General FormGeneral Form ΠΠLL ( R ( R ⋈ ⋈ CC S) ≡ S) ≡

ΠΠLL ((Π ((ΠA1,…,An, A1,…,An, An+1,…,An+kAn+1,…,An+k (R)) (R)) ⋈⋈ (Π(ΠB1,…,Bm, B1,…,Bm, Bm+1,…,Bm+pBm+1,…,Bm+p(S)) (S))

General Transformation Rules for General Transformation Rules for Relational Algebra Operations Relational Algebra Operations

(Cont.)(Cont.)

Page 55: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-21 18-55

8. Commutativity of set operations∪ and ∩

9. Associativity of ⋈, Ⅹ, ∪, ∩(R S) T ≡ R ( S T )

10.Commuting σwith set operations

σC ( R S) ≡ (σC ( R )) (σC

( S )) : ∪, ∩, -

General Transformation Rules for General Transformation Rules for Relational Algebra Operations Relational Algebra Operations

(Cont.)(Cont.)

Page 56: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-21 18-56

11.Πoperation commutes with ∪ΠL (R ∪S) = (ΠL (R) ) ∪(ΠS (B) )

12. (σC (R × S) ) = ( R ⋈ C S )

13.Other Transformations

C ≡ NOT ( C1 AND C2 )

≡ ( NOT C2 ) OR ( NOT C2 )

NOT ( C1 OR C2 )

≡ ( NOT C1 ) AND ( NOT C2 )

General Transformation Rules for General Transformation Rules for Relational Algebra Operations Relational Algebra Operations

(Cont.)(Cont.)

Page 57: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-21 18-57

Outline of a Heuristic Algebra Outline of a Heuristic Algebra Optimization AlgorithmOptimization Algorithm

1. Break up any SELECT operations with conjunctive conditions into a cascade of SELECT operations. σC1 AND C2 AND …AND Cn(R)≡σC1 (σC2 (…(σCn(R))…))

2. Move each SELECT operations as far down the query tree as is permitted by the attributesσC1(σC2(R)) ≡ σC2(σC1(R))ΠA1,A2…,An (σC (R)) ≡ σC (ΠA1,A2…,An (R))σC (R S) ≡⋈ (σC (R)) S⋈

σC (R S) ≡ (σC (R)) (σC (S))

Page 58: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-21 18-58

3. Rearrange the leaf nodes of tree so that the leaf node relations with the most the most restrictive operationsrestrictive operations are executed first.

(R S) T ≡ R (ST)

4. Combine CARTESIAN PRODUCT with a sub

sequent SELECT into a Join.

Outline of a Heuristic Outline of a Heuristic Algebra Optimization Algebra Optimization

Algorithm (Cont.)Algorithm (Cont.)

fewest tuples or smallest absolute size

Page 59: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-22 18-59

5. Break down and move lists of projection attributes down the tree as far as possible.ΠList1 (ΠList2 (…(ΠListn (R))…))= ΠList1 (R)ΠA1,A2…,An (σC (R)) ≡ σC (ΠA1,A2…,An (R))ΠL (R ⋈ C S) ≡ (ΠA1,…,An (R)) ⋈ (ΠB1,…,Bm(S))ΠL (R S) ≡ (ΠL (R)) (ΠL (S))

6. Identify subtrees that represent groups of operations that can be executed by a single algorithm. Π(σC1 (R)) ⋈ C2 (Π(σC3 (R)) ) see 6-18

Outline of a Heuristic Outline of a Heuristic Algebra Optimization Algebra Optimization

Algorithm (Cont.)Algorithm (Cont.)

Page 60: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-23 18-60

Heuristic Optimization of Query Heuristic Optimization of Query GraphGraph

Query Decomposition TechniqueQuery Graph for QUEL languageNode: tuple variableConstant node: constant valuesEdges: join condition

selection condition

(Relational Calculus)

Page 61: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

Q2: RANGE OF P IS PROJECT, D IS DEPARTMENT, E IS EMPLOYEE RETRIVE (P.PNUMBER, D.DNUMBER, E.LNAME, E.BDATE, E.ADDRESS) WHERE P.DNUM=D.DNUMBER AND D.MGRSSN=E.SSN AND P.PLOCATION=‘Stafford’

SELECT-PROJECT-JOINCanonical representation

What the query will retrieve but not how to execute the query

Page 62: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

Detached subquery Qb Detached subquery Qa

Q’: RANGE OF P IS PROJECT, W IS WORKS_ON, E IS EMPLOYEE RETRIVE ( E.LNAME ) WHERE P.PLOCATION=‘Stafford’ AND P.DNUM=4 AND

P.PNUMBER=W.PNO AND W.ESSN=ESSN AND E.BDATE > ‘DEC-31-1957’

Identifysingle-variable

subqueries

Detachment and execution of single variable subqueries

Detachment and Tuple SubstitutionDetachment and Tuple Substitution

Page 63: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-25 18-63

E’ W P’

E’ W t[PNUMBER]

E‘.SSN=W.ESSN W.PNO=P’.PNUMBER

E‘.SSN=W.ESSN W.PNO=t[PNUMBER]

E’ W t[PNUMBER]

E‘.SSN=W.ESSN W.PNO=t[PNUMBER]

(t[PNUMBER]=10)

(t[PNUMBER]=30)

(b) σE.BDATE > ‘DEC-31-1957’‘(EMPLOYEE) σP.PLOCATION=‘STAFFORD’ AND P.DNUM=4 (PROJECT)

1030

999887777453453453987987987 For each t in P’ for tuple substitution n- variable

(n-1)- variable

pick small relation

Page 64: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

Apply deattachment once more.

For each tuple s in W’ for tuple substitution

Apple deattachment once more.453453453987987987

Page 65: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-27 18-65

Using Cost Estimates in Query Using Cost Estimates in Query OptimizationOptimizationcompiled queryinterpreted query

Cost Components for Query ExecutionCost Components for Query Execution

1. Access cost to secondary storage (large database)Searching for, reading, writing data blocks.

2. Storage CostStoring intermediate files

3. Computation Cost (smaller database)Searching for, sorting, merging, records, computing field values,…

Page 66: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-27 18-66

Cost Components for Query Execution Cost Components for Query Execution (Cont.)(Cont.)

4. Communication Cost (distributed database)query (result) from query site to database site,(database site) (query)

5. Memory Usage Lostnumber of memory buffers needed during query execution

Page 67: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-28 18-67

Catalog Information used in Lost Catalog Information used in Lost FunctionsFunctions

The size of each filenumber of records (tuples) rnumber of blocks bblocking factor bfrPrimary access method (attributes)number of levels × of each multilevel indexnumber of first-level index blocks bI1

number of distinct values d of an indexing attributesselection cardinality s of an attributeskey attribute s=1 sl=1/rnonkey attribute s=(r/d) sl=1/d

(leave nodes)

Page 68: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-28.2 18-68

98

98 53 81 104 109

8 17 36 42 53 56 65 72 81 107 112 119102 104 125 12783 96 98

Page 69: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-28.1 18-69

Page 70: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

B+ tree of order P

Page 71: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,
Page 72: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-29 18-72

Examples of Lost Functions for Examples of Lost Functions for SELECTSELECT

memory ← memory ← # of block transfer# of block transfer → → diskdisk

S1. Linear Search (Brute Force)– all records satisfying the selection condition

CS1a=b

– equality condition on a key

CS1b=(b/2) 成功CS1b= b 失敗

Page 73: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-29 18-73

Examples of Lost Functions for Examples of Lost Functions for SELECT (Cont.)SELECT (Cont.)

S2. Binary Search

special case: equality condition on equality attribute S = 1 CS2 = log2b

σSSN=123456789EMPLOYEE

1)(log22 bfrSbCS

locate # of blocks satisfying the selection condition

Page 74: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-30 18-74

Examples of Lost Functions for Examples of Lost Functions for SELECT (Cont.)SELECT (Cont.)

S3. Primary index CS3a= X+1 hashing σSSN=123456789 (EMPLOYEE) CS3b= 1 CS3b= 2

S4. Using an ordering index to retrieve multiple records. σσDNUMBER > 5 DNUMBER > 5 (DEPARTMENT)(DEPARTMENT) >, ≥, <, or ≤ on a key field with an ordering index: CS4= X+(b/2) rough estimationlocate scan

Page 75: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-30/31 18-75

Examples of Lost Functions for Examples of Lost Functions for SELECT (Cont.)SELECT (Cont.)

S5. Using a clustering index to retrieve multiple records σσDNO = 5 DNO = 5 (EMPLOYEE)(EMPLOYEE)

S6.S6. Using a secondary (BUsing a secondary (B++-tree) index-tree) index equality comparisonequality comparison CCS6a S6a = X + S= X + S

>, >, ≥, <, ≤ comparisons≥, <, ≤ comparisons CCS6b S6b = X + (b= X + (bI1I1S / 2) + ( r / 2)S / 2) + ( r / 2)

)(5 bfrSXCS

each record may reside on a different block

assume half the file records satisfy the condition

Page 76: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-31 18-76

Examples of Lost Functions for Examples of Lost Functions for SELECT (Cont.)SELECT (Cont.)

S7. Conjunctive Selection σσDNO=5 AND SALARY>30000 AND SEX=F DNO=5 AND SALARY>30000 AND SEX=F

(EMPLOYEE)(EMPLOYEE) S1 or one of S2-S6

S8. Conjunctive selection using a composite index S3a, S5, S6a σσESSN=123456789 AND DNO=10ESSN=123456789 AND DNO=10(WORKS_ON)(WORKS_ON)

Page 77: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-32 18-77

EMPLOYEEEMPLOYEEFNAME, MINIT, NAME, SSN, BDATE, FNAME, MINIT, NAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPERSSN, ADDRESS, SEX, SALARY, SUPERSSN, DNODNO

rE =10,000 records,

bE =2000 disk blocks

bfrE= 5 records / blockAccess paths:Access paths:1. Cluster index on SALARY XSALARY = 3, SSALARY = 202. Secondary index on SSN XSSN = 4, SSSN= 13. Seconding index on DNO XDNO = 2 bI1DNO = 4 dDNO = 125 SDNO = (10,000 / 125) = 80

Page 78: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-33 18-78

Access paths (Cont.)Access paths (Cont.):

4. Secondary index on SEX XSEX=1, dSEX=2

SSEX = (10,000 / 2) = 5000

(OP1) σ(OP1) σSSN=123456789SSN=123456789(EMPLOYEE)(EMPLOYEE)

Ⅹ Brute force

CS1b=( bE / 2) =( 2000 / 2) =

1000

⃝ Secondary index

CS6a = XSSN + 1 = 4 + 1 =5

Page 79: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-33 18-79

(OP2) σ(OP2) σDNO > 5 DNO > 5 (EMPLOYEE)(EMPLOYEE)

Z Brute force CS1a= bE = 2000 Ⅹ Secondary index CS6b= XDNO+ ( bI1DO / 2) + ( rE / 2 ) = 2 + ( 4 / 2 ) + (10,000 / 2 ) = 5004

Page 80: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-34 18-80

(OP3) σ(OP3) σDNO =5 DNO =5 (EMPLOYEE)(EMPLOYEE)

Ⅹ Brute force CS1a= bE = 2000

Z Secondary index CS6a = XDNO+ SDNO

= 2 + 80

= 82s

Page 81: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-34 18-81

(OP4) σ(OP4) σDNO =5 AND SALARY > 30000 AND SEX=F DNO =5 AND SALARY > 30000 AND SEX=F (EMPLOYEE)(EMPLOYEE)

Ⅹ Brute force

CS1a= bE = 2000

⃝ Condition DNO=5

CS6a = XDNO+ SDNO = 2 + 80 = 82

Ⅹ Condition SALARY > 30000

CS4= XDNO+ ( bE / 2) = 3 + 2000

/2=1003 Ⅹ Condition SEX=F

CS6a = XSEX+ SSEX= 1+ 5000 = 5001

Page 82: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-35 18-82

Examples of Lost Functions for Examples of Lost Functions for JOINJOIN

Estimate the size after join operationJoin selectivity js = |(R ⋈ C S)| / |(R × S)|

= |(R ⋈ C S)| / (|R| × |S|)No join condition Cjs = 1No tuples satisfy join condition js = 0In general0 ≤ js≤ 1C: R.A = S.B .. A is a key of R |(R ⋈ C S)| ≤ |S| js ≤1/ |R| .. B is a key of S js ≤1/ |S|

Page 83: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-36 18-83

The size of file after join The size of file after join operationoperation

|(R ⋈ |(R ⋈ CC S)| = js S)| = js |R| |R| |S| |S|

J1. Nested loop approach R ⋈ A=B S R: bR blocks R: outer loop S: bS blocks three memory buffers CJ1=bR+ (bR bS) + ( ( js |R| |S|) / bfrRS )

Write file in the disk

Page 84: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-36/37 18-84

J2. Use an access structure to retrieve the matching records index on join attribute B of S secondary index

CJ2a= bR+ (|R| ( XB+ SB)) + … clustering index

CJ2b= bR+ (|R| ( XB+ (SB / bfrb))) + … primary index

CJ2C= bR+ (|R| ( XB+ 1 )) + … hash key

CJ2d= bR+ (|R| h ) + …

Single-loop join

average # of block access

to a record

Page 85: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-37 18-85

J3. Sort-Merge join (sorted on join attributes)

))((

))log1(2(

))log1(2(

)(

2

23

3

RSSR

SS

RRbj

RSSRaj

bfrSRjsbb

bb

bbC

bfrSRjsbbC

))((

))log1(2(

))log1(2(

)(

2

23

3

RSSR

SS

RRbj

RSSRaj

bfrSRjsbb

bb

bbC

bfrSRjsbbC

merge

sort

Page 86: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-38 18-86

Example of Using the Lost Example of Using the Lost FunctionsFunctions

EMPLOYEE file1. rE=10,000 bE=2000 bfrE=5

2. Clustering index on SALARYXSALARY=3, SSALARY =20

3. Secondary index on SSNXSSN= 4, SSSN=1

4. Secondary index on DNOXDNO=2, bI1DNO=4, dDNO=125, SDNO=80

5. Secondary index on SEXXSEX=1, dSEX=2, SSEX=5000

Page 87: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-38 18-87

Example of Using the Lost Example of Using the Lost Functions (Cont.)Functions (Cont.)

DEPARTMENT file

1. rD=125, bD=13

2. Primary index on DNUMBER

XDNUMBER= 1

3. Secondary index on MGRSSN

SMGRSSN= 1, XMGRSSN=2

4. Blocking factor for resulting file

bfrED=4

Page 88: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-39 18-88

(OP6) EMPLOYEE ⋈ (OP6) EMPLOYEE ⋈ DNO=DNUMBER DNO=DNUMBER

DEPARTMENTDEPARTMENT

1251)1(

DEPARTMENTjs

Ⅹ 1. Using J1 with EMPLOYEE as outer loop CJ1 = bE + (bE bD) +( jsOP6 rE rD) / bfrED

= 2000 + 2000 13 + 1/125 10000 125/4 = 30500

Ⅹ 2. Using J1 with DEPARTMENT as outer loop CJ1a = bE + (bE bD) +…

= 13 + (13 2000) +… =28513

Page 89: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-39 18-89

(OP6) EMPLOYEE ⋈ (OP6) EMPLOYEE ⋈ DNO=DNUMBER DNO=DNUMBER

DEPARTMENT (Cont.)DEPARTMENT (Cont.)125

1)1( DEPARTMENT

js

Ⅹ 3. Using J2 with EMPLOYEE as outer loop CJ2 = bE + (rE ( XDNUMBER +1)) +… = 2000 + (10000 2) +… = 24500

⃝Z 4. Using J2 with DEPARTMENT as outer loop CJ2a = bD + ( rD ( XDNO + SDNO) ) +… = 13 + 125 ( 2 + 80 ) +… = 12763

Page 90: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

18-39-1 18-90

Multiple Relation Queries and Join OrderingMultiple Relation Queries and Join Ordering

join n relations ⇒ n - 1 join operations

left-deep tree: the right child of each nonleaf node is always a base relation

Page 91: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

13-39-1 18-91

Multiple Relation Queries and Join Multiple Relation Queries and Join Ordering (Cont.)Ordering (Cont.)

1) Amenable to pipeliningexample. Join algorithm: single-loop methoda disk page of tuples of the outer relation is used to probe the inner relation for matching tuples

2) Allow the optimizer to utilize any access paths on the inner relation

Page 92: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

18-39-2 18-92

Example to Illustrate Cost-Based Example to Illustrate Cost-Based Query OptimizationQuery Optimization

Q2: SELECT PNUMBER, DNUM, LNAME, ADDRESS, BDATE FROM PROJECT, DEPARTMENT, EMPLOYEE WHERE DNUM=DNUMBER AND MGRSSN=SSN AND PLOCATION=‘Stafford’;

Potential join orders1. PROJECT DEPARTMENT EMPLOYEE⋈ ⋈2. DEPARTMENT PROJECT EMPLOYEE⋈ ⋈3. DEPARTMENT EMPLOYEE PROJECT⋈ ⋈4. EMPLOYEE DEPARTMENT PROJECT⋈ ⋈

Page 93: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

13-39-2 18-93

Page 94: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

18-39-3 18-94

Page 95: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

18-39-4 18-95

(1) PROJECT DEPARTMENT EMPL⋈ ⋈(1) PROJECT DEPARTMENT EMPL⋈ ⋈OYEE OYEE

⒜ PROJECT ⋈ DEPARTMENT

σP.PLOCATION=‘Stafford’Join method : table scanaccess method: no index

Selection methodtable scan (linear search)PROJ_PLOC index

Page 96: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

18-39-4 18-96

SELECTION parti. Index access

PROJ_PLOC: nonunique, level:2, leaf-block:4, distinct.keys:200PROJECT: PNUMBER: 2000

lost = 2+10 =12 blocks accesses

ii. Table scanPROJECT: 100 blockslost : 100 block accesses

index block

data block

(c)

(a) 2000/200=10

Page 97: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

19-39-4/5 18-97

JOIN part nested-loop join method

σP.PLOCATION = ‘Stafford’ = TEMP 1

PROJECT 2000 rows, 100 blocks

2000/100 = 20 tuples / block

( 註 : 由 (i) 選到 10 tuples)

(b)

TEMP1 ⋈DNUM=DNUMBER DEPARTMENT: temp 2

key

10 tuples

Assume blocking factor : 5+ 100 blocks requiredAssume blocking factor : 5+ 100 blocks required

Page 98: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

18-39-5 18-98

⒝ TEMP2 ⋈ MGRSSN=SSN EMPLOYEE

Join method : access method: EMP_SSN unique, level:2, leaf-block: 50, distinct.keys: 10000

(c)

Single-loop join on Single-loop join on TEMP2TEMP2

TEMP2

Index block: 2Index block: 2

EMPLOYEE

data block: 1data block: 1‧‧‧‧‧‧

‧‧‧‧‧‧‧‧

●block 2 + 3 × 10 = 30 = 32 block accesses block 2 + 3 × 10 = 30 = 32 block accesses accesses accesses

Summary 12 + 32 = 44 block accessesSummary 12 + 32 = 44 block accesses

Page 99: 1 Chapter 18 Query Processing and Optimization. 16-118-2 Query Processing and Optimization Scanner: identify language components. keywords, attribute,

16-40 18-99

Semantic Query OptimizationSemantic Query Optimization

SELECT E.LNAME, M.LNAMEFROM EMPLOYEE E MWHERE E.SUPERSSN = M.SSN AND E. SALARY > M.SALARY

No employee can earn more than his or her

direct supervisor

No employee can earn more than his or her

direct supervisor