sorry to break your party, but a well written join will be faster than a union.
- it uses more lightweight statistics collection model (based on cardinality, rather than random dives)
- query will get parsed only once (no need for multiple subselect evaluation)
- resultset will not be materialized in a temptable (it gets even for UNION ALL)