Query Optimization Summary
Create initial (naοve) query execution plan.
Apply transformation rules:
Try to un-nest blocks
Move predicates and grouping operators.
Consider each block at a time:
Determine join order
Push selections, projections if possible.