• In general, this rearrangement can be done for predicates that refer to columns from one input to the join. Which is extremely common.

  • "Pushing the select below the join" is a very important query optimization.

  • Query optimization involves discovering rearrangements like this, estimating the cost of each, and picking the cheapest alternative.