0% found this document useful (0 votes)
84 views77 pages

Introduction To Query Processing and Query Optimization Techniques

This document introduces query processing and optimization techniques. It discusses query optimization, which chooses an efficient execution plan by estimating costs. The basic steps in query processing are translating SQL queries into relational algebra expressions and evaluating the plan. External sorting algorithms are needed for operations like order by and join. The external sort-merge algorithm works in two phases: it first creates initial sorted runs that are then merged together in multiple passes until all data is sorted. 
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
84 views77 pages

Introduction To Query Processing and Query Optimization Techniques

This document introduces query processing and optimization techniques. It discusses query optimization, which chooses an efficient execution plan by estimating costs. The basic steps in query processing are translating SQL queries into relational algebra expressions and evaluating the plan. External sorting algorithms are needed for operations like order by and join. The external sort-merge algorithm works in two phases: it first creates initial sorted runs that are then merged together in multiple passes until all data is sorted. 
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 77

 

Introduction to Query Processing


and Query Optimization
Techniques

 1 
 Introduction to Query Processing 

 Query optimization:
 The process of choosing a suitable execution
strategy for processing a query.
 Amongst all equivalent evaluation plans choose
the one with lowest cost.
 Cost is estimated using statistical information
from the database catalog
 e.g. number of tuples in each relation, size of tuples

 Two internal representations of a query:


 Query Tree
 Query Graph

 2 
 Basic Steps in Query Processing 

 3 
 Basic Steps in Query Processing 

 Select balance From account where


balance < 2500
 balance2500(balance(account))

is equivalent to

 balance(balance2500(account))

 Annotated relational algebra expression specifying


detailed evaluation strategy is called an evaluation-plan.
 E.g., can use an index on balance to find accounts
with balance  2500,
 or can perform complete relation scan and discard
accounts with balance  2500

 4 
 Measures of Query Cost 

 Cost is generally measured as total elapsed time for


answering query. Many factors contribute to time cost
 disk accesses, CPU, or even network communication

 Typically disk access is the predominant cost, and is also


relatively easy to estimate.

 For simplicity we just use number of block transfers from


disk as the cost measure

 Costs depends on the size of the buffer in main memory


 Having more memory reduces need for disk access

 5 
 Translating SQL Queries into Relational 
Algebra
 Query Block:
 The basic unit that can be translated into the
algebraic operators and optimized.
 A query block contains a single SELECT-FROM-
WHERE expression, as well as GROUP BY and
HAVING clause if these are part of the block.

 Nested queries within a query are identified as


separate query blocks
 Aggregate operators in SQL must be included in
the extended algebra.

 6 
 Translating SQL Queries into Relational 
Algebra
SELECT LNAME, FNAME
FROM EMPLOYEE
WHERE SALARY > ( SELECT MAX (SALARY)
FROM EMPLOYEE
WHERE DNO = 5);

SELECT LNAME, FNAME SELECT MAX (SALARY)


FROM EMPLOYEE FROM EMPLOYEE
WHERE SALARY > C WHERE DNO = 5

πLNAME, FNAME (σSALARY>C(EMPLOYEE)) ℱMAX SALARY (σDNO=5 (EMPLOYEE))

 7 
 Algorithms for External Sorting 

 Sorting is needed in
 Order by, join, union, intersection, distinct, …
 For relations that fit in memory, techniques like
quicksort can be used.

 External sorting:
 Refers to sorting algorithms that are suitable for
large files of records stored on disk that do not
fit entirely in main memory, such as most
database files.

 For relations that don’t fit in memory, external


sort-merge is a good choice
 8 
 External Sort-Merge 

 External sort-merge algorithm has two steps:


 Partial sort step, called runs.
 Merge step, merges the sorted runs.
 Sort-Merge strategy:
 Starts by sorting small subfiles (runs) of the main file
and then merges the sorted runs, creating larger sorted
subfiles that are merged in turn.
 Sorting phase:
 Sorts nB pages at a time

 nB = # of main memory pages buffer


 creates nR = b/nB initial sorted runs on disk

 b = # of file blocks (pages) to be sorted

 Sorting Cost = read b blocks + write b blocks = 2 b


 9 
 External Sort-Merge 

 Example:
 nB = 5 blocks and file size b = 1024 blocks, then
 nR = (b/nB) = 1024/5 = 205 initial sorted runs
each of size 5 bocks (except the last run which
will have 4 blocks)

nB = 2, b = 7, nR = b/nB = 4

run

 10 
 External Sort-Merge 

 Sort Phase: creates nR sorted runs.


i = 0
Repeat
Read next nB blocks into RAM
Sort the in-memory blocks
Write sorted data to run file Ri
i = i + 1
Until the end of the relation

nR = i

 11 
 External Sort-Merge 

 Merging phase:
 The sorted runs are merged during one or more
passes.
 The degree of merging (dM) is the number of
runs that can be merged in each pass.
 dM = Min (nB-1, nR)
 nP = (logdM(nR))
 nP: number of passes.
 In each pass,
 One buffer block is needed to hold one block
from each of the runs being merged, and
 One block is needed for containing one block of
the merged result.
 12 
 External Sort-Merge 

 We assume (for now) that nR  nB.


 Merge the runs (nR -way merge).
 Use n blocks of memory to buffer input runs,
R
and 1 block to buffer output.
 Merge nR Runs Step
Read 1st block of each nR runs Ri into its buffer page
Repeat
Select 1st record (sort order) among nR buffer pages
Write the record to the output buffer.
If the output buffer is full write it to disk
Delete the record from its input buffer page
If the buffer page becomes empty then read the next block (if
any) of the run into the buffer
Until all input buffer pages are empty
 13 
 External Sort-Merge 

 Merge nB - 1 Runs Step


 If nR  nB, several merge passes are required.
 merge a group of contiguous nB - 1 runs using
one buffer for output
 A pass reduces the number of runs by a factor
of nB - 1, and creates runs longer by the same
factor.
 E.g. If nB = 11, and there are 90 runs, one pass
reduces the number of runs to 9, each 10 times the
size of the initial runs
 Repeated passes are performed till all runs have
been merged into one

 14 
 External Sort-Merge 
 Degree of merging (dM)
 # of runs that can be merged together in each pass = min
(nB - 1, nR)
 Number of passes nP = (logdM(nR))
 In our example
 d = 4 (four-way merging)
M
 min (nB-1, nR) = min(5-1, 205) = 4
 Number of passes nP = (logdM(nR)) = (log4(205)) = 4
 First pass:
– 205 initial sorted runs would be merged into 52 sorted runs
 Second pass:
– 52 sorted runs would be merged into 13
 Third pass:
– 13 sorted runs would be merged into 4
 Fourth pass:
– 4 sorted runs would be merged into 1
 15 
 External Sort-Merge 
Blocking factor bfr = 1 record, nB = 3, b = 12, nR = 4, dM = min(3-1, 4) = 2

 16 
 External Sort-Merge 

 17 
 External Sort-Merge 
 External Sort-Merge: Cost Analysis
 Disk accesses for initial run creation (sort phase) as well as
in each merge pass is 2b
 reads every block once and writes it out once

 Initial # of runs is nR = b/nB and # of runs decreases by a


factor of nB - 1 in each merge pass, then the total # of merge
passes is np = logdM(nR)

 In general, the cost performance of Merge-Sort is


 Cost = sort cost + merge cost
 Cost = 2b + 2b * np
 Cost = 2b + 2b * logdM nR
 = 2b (logdM(nR) + 1)
 18 
 External Sort-Merge 

 19 
 Catalog Information 

 File
 r: # of records in the file
 R: record size
 b: # of blocks in the file
 bfr: blocking factor

 Index
 x: # of levels of a multilevel index
 bI1: # of first-level index blocks

 20 
 Catalog Information 
 Attribute
 d: # of distinct values of an attribute
 sl (selectivity):
the ratio of the # of records satisfying the condition to
the total # of records in the file.
s (selection cardinality) = sl * r
average # of records that will satisfy an equality
condition on the attribute
 For a key attribute:
 d = r, sl = 1/r, s=1
 For a nonkey attribute:
 assuming that d distinct values are uniformly
distributed among the records
 the estimated sl = 1/d, s = r/d
 21 
 File Scans 

 Types of scans
 File scan – search algorithms that locate and
retrieve records that fulfill a selection condition.

 Index scan – search algorithms that use an index


selection condition must be on search-key of index.

 Cost estimate C = # of disk blocks scanned

 22 
 Algorithms for SELECT Operations 
 Implementing the SELECT Operation

 Examples:
 (OP1): SSN='123456789' (EMP)
 (OP2): DNUMBER>5(DEPT)
 (OP3): DNO=5(EMP)
 (OP4): DNO=5 AND SALARY>30000 AND SEX=F(EMP)
 (OP5): ESSN=123456789 AND PNO=10(WORKS_ON)

 23 
 Algorithms for Selection Operation 
 Search Methods for Simple Selection:
 S1 (linear search)
 Retrieve every record in the file, and test whether
its attribute values satisfy the selection condition.

 If selection is on a nonkey attribute, C = b

 Ifselection is equality on a key attribute,


if record found, average cost C = b/2, else C = b

 24 
 Algorithms for Selection Operation 
 S2 (binary search)
 Applicable if selection is an equality
comparison on the attribute on which file is
ordered.
 Assume that the blocks of a relation are stored
contiguously
 If selection is on a nonkey attribute:

C = log2b: cost of locating the 1st tuple +


s/bfr - 1: # of blocks containing records that satisfy
selection condition
 If selection is equality on a key attribute:
C = log2b, since s = 1, in this case

 25 
 Selections Using Indices 

 S3 (primary or hash index on a key, equality)


 Retrieve a single record that satisfies the corresponding
equality condition
 If the selection condition involves an equality comparison on a
key attribute with a primary index (or a hash key), use the
primary index (or the hash key) to retrieve the record.

 Primary index: retrieve 1 more block than the # of index


levels,
 C = x + 1:

 Hash index:
 C = 1: for static or linear hashing
 C = 2: for extendable hashing

 26 
 Selections Using Indices 
 S4 (primary index on a key, range selection)
 S4 Using a primary index to retrieve multiple
records:
 If the comparison condition is >, ≥, <, or ≤ on a key field with a
primary index, use the index to find the record satisfying the
corresponding equality condition, then retrieve all subsequent
records in the (ordered) file.
 Assuming relation is sorted on A
 For Av(r) use index to find 1st tuple = v and retrieve all
subsequent records.
 For Av(r) use index to find 1st tuple = v and retrieve all
preceding records.
– OR just scan relation sequentially till 1st tuple  v; do not use index
with average cost C = b/2

 Average cost C = x + b/2

 27 
 Selections Using Indices 

 S5 (clustered index on nonkey, equality)


 Retrieve multiple records.
 Records will be on consecutive blocks
 C = x + s/bfr

# of blocks containing records that satisfy selection


condition

 28 
 Selections Using Indices 

 S6-1 (secondary index B+-tree, equality)


 Retrieve a single record if the search-key is a
candidate key,
C = x + 1

 Retrievemultiple records if search-key is not a


candidate key,
C = x + s
Can be very expensive!. Each record may be on a
different block , one block access for each retrieved
record

 29 
 Selections Using Indices 
 S6-2 (secondary index B+-tree, comparison)
 For Av(r) use index to find 1st index entry = v
and scan index sequentially from there, to find
pointers to records.
 For Av(r) just scan leaf pages of index finding
pointers to records, till first entry  v

 If½ records are assumed to satisfy the condition,


then ½ first-level index blocks are accessed, plus
½ the file records via the index
C = x + bI1/2 + r/2

 30 
 Complex Selections: 12…n(r) 

 S7 (conjunctive selection using one index)


 Select i and algorithms S1 through S6 that

results in the least cost for i(r).


 Test other conditions on tuple after fetching it
into memory buffer.
 Cost of the algorithms chosen.

 31 
 Complex Selections: 12…n(r) 

 S8 (conjunctive selection using composite index).


 If two or more attributes are involved in equality
conditions in the conjunctive condition and a
composite index (or hash structure) exists on the
combined field, we can use the index directly.

 Use appropriate composite index if available


using one the algorithms S3 (primary index), S5,
or S6 (B+-tree, equality).

 32 
 Complex Selections: 12…n(r) 
 S9 (conjunctive selection by intersection of record
pointers)
 Requires indices with record pointers.
 Use corresponding index for each condition, and
take intersection of all the obtained sets of record
pointers, then fetch records from file
 If some conditions do not have appropriate
indices, apply test in memory.
 Cost is the sum of the costs of the individual
index scan plus the cost of retrieving records
from disk.

 33 
 Complex Selections: 12… n(r) 
 S10 (disjunctive selection by union of identifiers)
 Applicable if all conditions have available indices.

Otherwise use linear scan.


 Use corresponding index for each condition, and
take union of all the obtained sets of record
pointers. Then fetch records from file

 READ
 “Examples of Using the Cost Functionst”

page 569--570.
page 694-695

 34 
 Duplicate Elimination 

 Duplicate elimination can be implemented via


hashing or sorting.
 On sorting, duplicates will come adjacent to each
other, and all but one set of duplicates can be
deleted.
 Optimization: duplicates can be deleted during
run generation as well as at intermediate merge
steps in external sort-merge.
 Cost is the same as the cost of sorting

 Hashing is similar – duplicates will come into the


same bucket.

 35 
 Algorithms for PROJECT Operation 
 Algorithm for PROJECT operations (Figure 15.3b)
 <attribute list>(R)
1. If <attribute list> has a key of relation R, extract all
tuples from R with only the values for the attributes in
<attribute list>.
2. If <attribute list> does NOT include a key of relation R,
duplicated tuples must be removed from the results.

 36 
 Algorithms for SET Operations 
 Algorithm for SET operations
 Set operations:
 UNION, INTERSECTION, SET DIFFERENCE and
CARTESIAN PRODUCT
 CARTESIAN PRODUCT of relations R and S include all
possible combinations of records from R and S. The
attribute of the result include all attributes of R and S.
 Cost analysis of CARTESIAN PRODUCT
 If R has n records and j attributes and S has m records
and k attributes, the result relation will have n*m
records and j+k attributes.
 CARTESIAN PRODUCT operation is very expensive and
should be avoided if possible.

 37 
 Set Operations 
 R  S: (See Figure 18.3c)
 1. Sort the two relations on the same attributes.
 2. Scan and merge both sorted files concurrently,
whenever the same tuple exists in both relations, only
one is kept in the merged results.
 R  S: (See Figure 18.3d)
 1. Sort the two relations on the same attributes.
 2. Scan and merge both sorted files concurrently,
keep in the merged results only those tuples that
appear in both relations.
 R – S: (See Figure 18.3e)
 keep in the merged results only those tuples that
appear in relation R but not in relation S.

 38 
 

b. Project
c. Union

 39 
 d. Intersection e. Different 

 40 
 Aggregate Operations 
 The aggregate operations MIN, MAX, COUNT,
AVERAGE, and SUM can be computed by scanning
the whole records (the worst case)
 If index exists on the attribute of MAX , MIN
operation, then these operations can be done in a
much more efficient way: select max/min (salary)
from employee
 If an (ascending) index on SALARY exists for
the employee relation, then the optimizer could
decide on traversing the index for the
largest/smallest value, which would entail
following the right/left most pointer in each
index node from the root to a leaf.

 41 
 Aggregate Operations 
 SUM, COUNT and AVG
 For a dense index (each record has one index entry):
 Apply the associated computation to the values in the index.
 For a non-dense index:
 Actual number of records associated with each index entry
must be accounted for
 With GROUP BY: the aggregate operator must be applied separately
to each group of tuples.
 Use sorting or hashing on the group attributes to partition the
file into the appropriate groups;
 Computes the aggregate function for the tuples in each
group.
 What if we have Clustering index on the grouping attributes?

 42 
 Combining Operations using Pipelining

 Motivation
 A query is mapped into a sequence of operations.
 Each execution of an operation produces a
temporary result (Materialization).
 Generating & saving temporary files on disk is
time consuming.

 Alternative:
 Avoid constructing temporary results as much as
possible.
 Pipeline the data through multiple operations

pass the result of a previous operator to the next


without waiting to complete the previous operation.
 43 
 Materialization 
 Materialized evaluation:
 evaluate one operation at a time, starting
at the lowest-level.
 Use intermediate results materialized into
temporary relations to evaluate next-level
operations.  balance 2500 (account )

 44 
 Pipelining 
 Pipelined evaluation
 evaluate several operations simultaneously,
passing the results of one operation on to the next.
 E.g., in previous expression tree, don’t store result
of  balance2500 (account )
 instead, pass tuples directly to the join.
 Similarly, don’t store result of join, pass tuples
directly to projection.
 Much cheaper than materialization:
 no need to store a temporary relation to disk.
 Pipelining may not always be possible
 e.g., sort, hash-join.

 45 
 Using Heuristics in Query Optimization 

 Process for heuristics optimization


1. The parser of a high-level query generates an initial
internal representation;
2. Apply heuristics rules to optimize the internal
representation.
3. A query execution plan is generated to execute groups of
operations based on the access paths available on the
files involved in the query.

 The main heuristic is to apply first the operations that reduce


the size of intermediate results.
 E.g., Apply SELECT and PROJECT operations before
applying the JOIN or other binary operations.

 46 
 Using Heuristics in Query Optimization
 Query tree:
 A tree data structure that corresponds to a relational
algebra expression. It represents the input relations of
the query as leaf nodes of the tree, and represents the
relational algebra operations as internal nodes.
 An execution of the query tree consists of executing an
internal node operation whenever its operands are available
and then replacing that internal node by the relation that
results from executing the operation.
 Query graph:
 A graph data structure that corresponds to a relational
calculus expression. It does not indicate an order on
which operations to perform first. There is only a single
graph corresponding to each query.

 47 
 Using Heuristics in Query Optimization
 Example:
 For every project located in ‘Stafford’, retrieve the project
number, the controlling department number and the
department manager’s last name, address and birthdate.
 Relation algebra:
PNUMBER, DNUM, LNAME, ADDRESS, BDATE
(((PLOCATION=‘STAFFORD’(PROJECT))
DNUM=DNUMBER (DEPARTMENT)) MGRSSN=SSN
(EMPLOYEE))
 SQL query:
Q2: SELECT P.NUMBER,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’;

 48 
 Using Heuristics in Query Optimization

 49 
 Using Heuristics in Query Optimization

 50 
 Using Heuristics in Query Optimization

 Heuristic Optimization of Query Trees:


 The same query could correspond to many
different relational algebra expressions — and
hence many different query trees.
 The task of heuristic optimization of query trees
is to find a final query tree that is efficient to
execute.
 Example:
SELECT LNAME FROM EMPLOYEE, WORKS_ON,
PROJECT WHERE PNAME = ‘AQUARIUS’ AND
PNMUBER=PNO AND ESSN=SSN AND BDATE >
‘1957-12-31’;

 51 
 
Using Heuristics
in Query
Optimization

 52 
 
Using Heuristics
in Query
Optimization

 53 

Using Heuristics in 
Query
Optimization

 54 
 Transformation Rules for RA Operations 

1. Cascade of :
A conjunctive selection condition can be broken up into a cascade (sequence) of
individual  operations:
c1 AND c2 AND ... AND cn(R)  c1(c2(...(cn(R))...))

2. Commutativity of :
The  operation is commutative:
c1(c2(R))  c2(c1(R))

3. Cascade of :
In a cascade (sequence) of  operations, all but the last one can be ignored:
List1(List2(...(Listn(R))...)) = List1(R)

4. Commuting  with :
If the selection condition c involves only the attributes A1, ..., An in the
projection list, the two operations can be commuted:
A1, A2, ..., An(c(R)) = c(A1, A2, ..., An(R))

 55 
 Transformation Rules for RA Operations 

5. Commutativity of ⋈ (or ):


The ⋈ operation is commutative as is the  operation:
R ⋈c S = S ⋈c R; R  S = S  R

6. Commuting  with ⋈ (or ):


If all the attributes in the selection condition c involve only the
attributes of one of the relations being joined—say, R—the two
operations can be commuted as follows:
c(R ⋈ S)  (c(R)) ⋈ S

Alternatively, if the selection condition c can be written as (c1 and c2),


where condition c1 involves only the attributes of R and condition c2
involves only the attributes of S, the operations commute as follows:

c(R ⋈ S) (c1(R)) ⋈ (c2(S))

 56 
 Transformation Rules for RA Operations 

7. Commuting  with ⋈ (or ):


Suppose that the projection list is L = {A1, ..., An, B1, ...,
Bm}, where A1, ..., An are attributes of R and B1, ..., Bm
are attributes of S. If the join condition c involves only
attributes in L, the two operations can be commuted as
follows:
L(R ⋈c S)  (A1, ..., An(R)) ⋈c (B1, ..., Bm(S))

If the join condition c contains additional attributes not in


L, these must be added to the projection list, and a final 
operation is needed.

 57 
 Transformation Rules for RA Operations 

8. Commutativity of set operations:


The set operations  and  are commutative but – is not.

9. Associativity of ⋈, , , and :


These four operations are individually associative; that is, if
 stands for any one of these 4 operations (throughout the
expression), we have
(R  S)  T R  (S  T)

10. Commuting  with set operations:


The  operation commutes with , , and –. If  stands for
any one of these 3 operations, we have
c(R  S)  (c(R))  (c(S))

 58 
 Transformation Rules for RA Operations 

11. The  operation commutes with .


 L(R υ S)  (L(R)) υ (L(S))

12. Converting a (sequence into ⋈:


If the condition c of a thatfollows a  corresponds to a
join condition, convert the (sequence into a ⋈ as
(c(R  S)) = (R ⋈c S)

 59 
 Heuristic Algebraic Optimization Algorithm

1. Using rule 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. Using rules 2, 4, 6, and 10 concerning the commutativity of
select with other operations, move each select operation as
far down the query tree as is permitted by the attributes
involved in the select condition.
3. Using rule 9 concerning associativity of binary operations,
rearrange the leaf nodes of the tree:
 Position the leaf node relation with the most restrictive
σ operations so they are executed first,
 Make sure that the ordering of leaf nodes does
not cause CARTESIAN PRODUCT operations

 60 
 Heuristic Algebraic Optimization Algorithm

4. Using Rule 12, combine a cartesian product operation with a


subsequent select operation in the tree into a join operation.
Combine a  with a subsequent σ in the tree into a

5. Using rules 3, 4, 7, and 11 concerning the cascading of
project and the commuting of project with other operations,
break down and move lists of projection attributes down the
tree as far as possible by creating new project operations as
needed.

6. Identify subtrees that represent groups of operations that can


be executed by a single algorithm.

 61 
 Summary of Heuristics for Algebraic 
Optimization
 The main heuristic is to apply first the operations that
reduce the size of intermediate results.

 Perform select operations as early as possible to reduce the


number of tuples and perform project operations as early as
possible to reduce the number of attributes. (This is done by
moving select and project operations as far down the tree as
possible.)

 The select and join operations that are most restrictive


should be executed before other similar operations. (This is
done by reordering the leaf nodes of the tree among
themselves and adjusting the rest of the tree appropriately.)

 62 
 Query Execution Plans 

 An execution plan for a relational algebra query consists of


a combination of the relational algebra query tree and
information about the access methods to be used for each
relation as well as the methods to be used in computing the
relational operators stored in the tree.

 Materialized evaluation: the result of an operation is


stored as a temporary relation.

 Pipelined evaluation: as the result of an operator is


produced, it is forwarded to the next operator in sequence.

 63 
 Using Selectivity and Cost Estimates in 
Query Optimization
 Cost-based query optimization:
 Estimate and compare the costs of executing a
query using different execution strategies and
choose the strategy with the lowest cost
estimate.
 (Compare to heuristic query optimization)

 Issues
 Cost function
 Number of execution strategies to be
considered

 64 
 Using Selectivity and Cost Estimates in 
Query Optimization
 Cost Components for Query Execution
1. Access cost to secondary storage
2. Storage cost
3. Computation cost
4. Memory usage cost
5. Communication cost

 Note: Different database systems may focus on


different cost components.

 65 
 Using Selectivity and Cost Estimates in 
Query Optimization
 Catalog Information Used in Cost Functions
 Information about the size of a file
 number of records (tuples) (r),
 record size (R),
 number of blocks (b)
 blocking factor (bfr)
 Information about indexes and indexing attributes of a
file
 Number of levels (x) of each multilevel index
 Number of first-level index blocks (bI1)
 Number of distinct values (d) of an attribute
 Selectivity (sl) of an attribute
 Selection cardinality (s) of an attribute. (s = sl * r)

 66 
 Using Selectivity and Cost Estimates in 
Query Optimization
 Examples of Cost Functions for SELECT
 S1. Linear search (brute force) approach
 CS1a = b;
 For an equality condition on a key, CS1a = (b/2) if the
record is found; otherwise CS1a = b.
 S2. Binary search:
 CS2 = log2b + (s/bfr) –1
 For an equality condition on a unique (key) attribute,
CS2 =log2b
 S3. Using a primary index (S3a) or hash key (S3b) to
retrieve a single record
 CS3a = x + 1; CS3b = 1 for static or linear hashing;
 CS3b = 1 for extendible hashing;

 67 
 Using Selectivity and Cost Estimates in 
Query Optimization
 Examples of Cost Functions for SELECT (contd.)
 S4. Using an ordering index to retrieve multiple records:
 For the comparison condition on a key field with an
ordering index, CS4 = x + (b/2)
 S5. Using a clustering index to retrieve multiple records:
 CS5 = x + ┌ (s/bfr) ┐
 S6. Using a secondary (B+-tree) index:
 For an equality comparison, CS6a = x + s;
 For an comparison condition such as >, <, >=, or <=,
 CS6a = x + (bI1/2) + (r/2)

 68 
 Using Selectivity and Cost Estimates in 
Query Optimization
 Examples of Cost Functions for SELECT (contd.)
 S7. Conjunctive selection:
 Use either S1 or one of the methods S2 to S6 to solve.
 For the latter case, use one condition to retrieve the
records and then check in the memory buffer whether
each retrieved record satisfies the remaining conditions
in the conjunction.
 S8. Conjunctive selection using a composite index:
 Same as S3a, S5 or S6a, depending on the type of
index.

 69 
 10. Semantic Query Optimization 
 Semantic Query Optimization:
 Uses constraints specified on the database schema in order to
modify one query into another query that is more efficient to
execute.
 Consider the following SQL query,
SELECT E.LNAME, M.LNAME
FROM EMPLOYEE E M
WHERE E.SUPERSSN=M.SSN AND E.SALARY>M.SALARY
 Explanation:
 Suppose that we had a constraint on the database schema that
stated that no employee can earn more than his or her direct
supervisor. If the semantic query optimizer checks for the
existence of this constraint, it need not execute the query at
all because it knows that the result of the query will be
empty. Techniques known as theorem proving can be used
for this purpose.

 70 
 Example (1) 

An un-optimized relational algebra expression:


 Name ( GPA  3.5 and Title = 'Ada Programming Language’ and
Students.SSN = Enrollment.SSN and Enrollment.Course_no =
Courses.Course_no
(Students  Enrollment  Courses))

 71 
 
Example (2)
Initial query tree:
 Name
 GPA  3.5 and Title = 'Ada Programming Language’
and Students.SSN = Enrollment.SSN

and Enrollment.Course_no = Courses.Course_no


 Courses
Students Enrollment
 72 
 Example (3) 

Perform selections as early as possible.


 Name
 Enrollment.Course_no = Courses.Course_no

Students.SSN = Enrollment.SSN Title = 'Ada Programming
 Language’

 GPA  3.5  Enrollment


Courses
Students
 73 
 Example (4) 

Replace Cartesian products by joins.

 Name

 Title = 'Ada Programming Language’

 GPA  3.5 Enrollment Courses



Students
 74 
 
Example (5)
Perform more restrictive joins first.
 Name

 GPA  3.5 

Students Enrollment  Title = 'Ada Programming


Language’

Courses
 75 
 
Example (6)
Project out useless attributes early.
 Name

 SSN, Name  SSN

 GPA  3.5
 SSN, Course_no  Course_no
Students  Title = 'Ada Programming
Enrollment Language’

 76
Courses 
 Example (7) 

The optimized algebra expression is:


 Name (( SSN, Name ( GPA  3.5 (Students)))  ((SSN,
Course_no(Enrollments))  (Course_no ( Title = 'Ada
Programming Language’ (Courses)))))

 Projections and selections on the same relation


are usually performed using the same scan of
the relation.

 77 

You might also like