Legend and Symbols
Before diving into the formulas, it's essential to understand the symbols and terms used:
Symbol	Description
NKeys(Col)	The number of distinct values in column Col.
High(Col)	The highest value in column Col.
Low(Col)	The lowest value in column Col.
NTuples(R)	The number of tuples (rows) in relation (table) R.
NPages(R)	The number of pages required to store relation R.
NPages(I)	The number of pages used by index I.
Height(I)	The height of index I (number of levels in a B-tree index).
Π RFi	The product of all reduction factors RFi applied in a query.
Π NTuples(Ri)	The product of the number of tuples in all relations Ri participating in a join operation.
num_passes(R)	The number of passes required to sort relation R.
PF	Projection Factor: The portion (fraction) of all columns retained after a projection operation.
 
1. Reduction Factor (Selectivity)
Reduction Factor (RF) quantifies the fraction of data remaining after applying a selection predicate. It estimates how much a query reduces the data size based on certain conditions.
a. Selection: Column Equals a Value (Col = value)
[ \text{RF} = \frac{1}{\text{NKeys(Col)}} ]
•	Explanation: Assumes uniform distribution of values. If a column has NKeys(Col) distinct values, selecting a specific value reduces the data to 1/NKeys(Col) of the original.
b. Selection: Column Greater Than a Value (Col > value)
[ \text{RF} = \frac{\text{High(Col)} - \text{value}}{\text{High(Col)} - \text{Low(Col)}} ]
•	Explanation: Proportion of data where the column's value is greater than the specified value, based on the column's range.
c. Selection: Column Less Than a Value (Col < value)
[ \text{RF} = \frac{\text{value} - \text{Low(Col)}}{\text{High(Col)} - \text{Low(Col)}} ]
•	Explanation: Proportion of data where the column's value is less than the specified value.
d. Join: Column Equality (Col_A = Col_B)
[ \text{RF} = \frac{1}{\max(\text{NKeys(Col_A)}, \text{NKeys(Col_B)})} ]
•	Explanation: For joining two tables on columns Col_A and Col_B, the reduction factor depends on the higher number of distinct keys in either column.
e. No Information Available
[ \text{RF} = \frac{1}{10} ]
•	Explanation: When there's no statistical information about the data distribution, a default "magic number" of 0.1 (1/10) is used as an estimate.
 
2. Result Size Calculations
Estimates the number of tuples resulting from query operations.
a. Single Table Query
[ \text{Result_size} = \text{NTuples(R)} \times \prod \text{RFi} ]
•	Explanation: The number of tuples after applying one or more selection predicates with reduction factors RFi.
b. Join Operations
[ \text{Result_size} = \prod \text{NTuples(Ri)} \times \prod \text{RFi} ]
•	Explanation: For joining multiple relations, multiply the number of tuples in each participating relation and apply the combined reduction factors.
 
3. Indexing Cost
Evaluates the cost of using different types of indexes to execute queries.
a. B+-Tree Index
i. Single Tuple Selection (Primary Key Lookup)
[ \text{Cost} = \text{Height(I)} + 1 ]
•	Explanation: The cost includes traversing the index tree (height) and accessing the data page containing the tuple.
ii. Clustered Index (Multiple Tuples)
[ \text{Cost} = (\text{NPages(I)} + \text{NPages(R)}) \times \prod \text{RFi} ]
•	Explanation: Accessing the index pages and the clustered data pages. Reduction factors apply if multiple tuples are retrieved.
iii. Unclustered Index (Multiple Tuples)
[ \text{Cost} = (\text{NPages(I)} + \text{NTuples(R)}) \times \prod \text{RFi} ]
•	Explanation: Accessing index pages and individual data pages for each tuple (higher cost due to non-contiguous data storage).
b. Hash Index
i. Single Tuple Selection (Primary Key Lookup)
[ \text{Cost} = 1.2 + 1 = 2.2 ]
•	Explanation: Fixed cost for hashing and accessing the tuple.
ii. Clustered Hash Index (Multiple Tuples)
[ \text{Cost} = \text{NPages(R)} \times \prod \text{RFi} \times 2.2 ]
•	Explanation: Accessing data pages multiplied by the fixed cost for each tuple.
iii. Unclustered Hash Index (Multiple Tuples)
[ \text{Cost} = \text{NTuples(R)} \times \prod \text{RFi} \times 2.2 ]
•	Explanation: Each tuple requires separate access, hence the multiplication by NTuples(R).
 
4. Sequential Scan (Heap Scan) Cost
Calculates the cost of scanning an entire table without using any indexes.
[ \text{Cost} = \text{NPages(R)} ]
•	Explanation: Simply the number of pages in the relation, as each page must be read sequentially.

Q2 Introduction (Total marks for Q2: 5 marks)

Consider a relation with the following schema:

JobSeekers(id, firstname, lastname, city, soughtsalary)

The JobSeekers relation consists of 10,000 pages. Each page stores 100 tuples. The online software works in the 8 largest Australian cities and soughtsalary can have values between 60,000 and 160,000 (i.e., [60,000 – 160,000].)

Suppose that the following SQL query is executed frequently using the given relation:

SELECT *

FROM JobSeekers

WHERE city = ‘Melbourne’ AND soughtsalary > 80,000;

Your job is to:

    Compute the reduction factors and the estimated result size in number of tuples. (1 mark)
    Compute the estimated cost in number of disk I/O’s required to use a clustered B+ tree index on (city, soughtsalary) to answer this query. Suppose there are 2,000 index pages. (1 mark)
    Compute the estimated cost in number of disk I/O’s required to use an unclustered B+ tree index on (soughtsalary)to answer this query. Suppose there are 2,000 index pages. (1 mark)
    Compute the estimated cost in number of disk I/O’s required to use an unclustered Hash index on (city) to answer this query.  (1 mark)
    Compute the estimated cost in number of disk I/O’s required to use an unclustered Hash index on (soughtsalary) to answer this query.  (1 mark)
 NOTE WHEN SOLVING THE ABOVE YOU MUST USE THE FORMULAS PROVIDED ABOVE WHERE APPLICABLE WITHOUT FAIL AS THEY WILL NET THE CORRECT ANSWER. YOUR THINKING PROCESS SHOULD BE THIS. YOU MUST A) CALCULATE THE RELEVANT FORMULAS APPLICABLE TO THE QUESTION AT HAND, AND SEE IF THEY ARE APPLICABLE TO THE GIVEN QUESTION. B) STATE HOW THE TERMS WITHIN THE EQUATION RELATE TO THE QUESTION AT HAND) C) USE THE FORMULA IN ORDER TO SOLVE THE QUESTION. NOTE THAT WITH THE REDUCTION FACTORS THEY ARE THE TERMS IN BRACKETS, IF ITS (A) THEN ITS JUST THE REDUCTION FACTOR OF A, IF ITS (A,B) ITS THE PRODUCT OF THE REDUCTION FACTOR OF A AND B ETC. YOU MUST USE THIS THINKING PROCESS WHEN SOLVING QUESTIONS