Dynamic Programming
•Summary: computes optimal plans for subqueries:
–Step 1: {R1},  {R2}, …, {Rn}
–Step 2:  {R1, R2}, {R1, R3}, …, {Rn-1, Rn}
–…
–Step n: {R1, …, Rn}
•We used naïve size/cost estimations
•In practice:
–more realistic size/cost estimations (next)
–heuristics for Reducing the Search Space
•Restrict to left linear trees
•Restrict to trees “without cartesian product”
–need more than just one plan for each subquery:
•“interesting orders”