• For each 2-table join, push down selects and projects, consider different join algorithms.

  • E.g. join(A, B) has different performance than join(B, A), due to row counts, predicates that can be pushed down, indexes available.