Query execution components
PostgreSQL query execution involves the following four key components:
Parser: This performs syntax and semantic checking of the SQL string
Rewriter: This changes the query is some cases; for example, if the query is against a view, the rewriter will modify the query so that it goes against the base tables instead of the view
Planner: This key component comes up with a plan of execution
Executor: This executes the plan generated by the planner
Planner
The planner's job is to come up with a plan of execution. A plan is a tree consisting of one or more nodes. Each node, on execution, returns zero or more tuples. These tuples are used by the parent nodes in the tree until we reach the root node, which returns the results to the client. The planner has to make a few decisions, which we will cover now.
Access methods
Consider a simple query:
SELECT FIRST_NAME, LAST_NAME FROM EMP WHERE DEPT_NAME = 'HR'
A crucial decision the optimizer has to take is how to get the data that the...