•Algebraic transformations (many
and wacky).
•Statistical model: estimating
costs and sizes.
•Finding the best join
trees:
–Bottom-up (dynamic programming):
System-R
•Newer architectures:
–Starburst: rewrite and then tree
find
–Volcano: all at once, top-down.