When the query tree is passed to the Query Optimizer, the Query Optimizer performs a series of steps to break down the query into its component pieces for analysis to generate an optimal execution plan:
1. Query analysis—The query is analyzed to determine search arguments and join clauses. A search argument is defined as a
WHERE clause that compares a column to a constant. A join clause is a
WHERE clause that compares a column from one table to a column from another table.
2. Row estimation and index selection—Indexes are selected based on search arguments and join clauses (if any exist). Indexes are evaluated based on their distribution statistics and are assigned a cost.
3. Join selection—The join order is evaluated to determine ...