Beyond size estimation and plan generation, the rest of query optimization is just comparing costs to choose plans, and relies primarily on stuff you have done before. Size Estimation: You are given a histogram as follows over an attribute value for which you additionally record the minimum observed value as 1 and the maximum observed value as 74. 0-9 4 10-19 40 20-29 70 30-39 60 40-49 22 50- 8 How many occurrences do you expect for attribute value 27? For value 63? For value 77? For value 0? For value 1? For value 7? What is the selectivity of a query that chooses all tuples with value for this attribute greater than or equal to 35? Estimate the size of equi-join result for relations R1 and R2, where that join attribute for each relation has attribute value ranging from 0-100, R1 has 20,000 tuples with 80 distinct values for the join attribute, and R2 has 1000 tuples with 50 distinct values for the join attribute. Estimate the size of the result if the join above is not an equi-join, but rather a "theta" join, selecting all tuples where the join attribute value in R1 is greater than the corresponding value in R2. Plan Generation: You have a database with a primary index on ID for Employee and Dept, and secondary index on Name for the Employee relation only. You have access methods available for a Nested Loops Join, Nested Indexed Loop Join, and a Grace Hash Join. Generate alternative plans for the following query: SELECT E.Name FROM Employee E, Dept D WHERE E.Dept = D.ID AND D.Name = "Obfuscation"