Because relational systems are based on rigorous mathematical principles, there is a good deal of algebraic simplification and term reduction that can be made for most queries. Similarly, there are often semantically equivalent operations that can be substituted for analytically more difficult operations in order to simplify processing. The vast majority of these semantically equivalent rewrites cannot be specified in the query itself, examples being the substitution of a join index for an explicitly specified join operation and the pushing of projections (see, for example, McMahan et al. (2004) and, for details, “Predicate Pushdown and Pullup” on page 104).
The following sequence lists many of the more important methods used by the Query Rewrite subsystem to rewrite SQL code:
Predicate marshaling is also referred to as predicate move around.
Predicate push down and pullup is also referred to as pushing conditions.