Unionen vil være hurtigere, da den blot sender den første SELECT-sætning og derefter parser den anden SELECT-sætning og tilføjer resultaterne til slutningen af outputtabellen.
Join vil gå gennem hver række i begge tabeller, og finde match i den anden tabel kræver derfor meget mere behandling på grund af søgning efter matchende rækker for hver række.
REDIGER
Med Union mener jeg Union All, da det virkede passende til det, du forsøgte at opnå. Selvom en normal Union generelt er hurtigere, så meld dig ind.
EDIT 2 (Svar på @seebiscuits kommentar)
Jeg er ikke enig med ham. Teknisk set, uanset hvor god dit join er, er et "JOIN" stadig dyrere end en ren sammenkædning. Jeg lavede et blogindlæg for at bevise det på min blog codePERF[dot]net . I praksis tjener de 2 helt forskellige formål, og det er vigtigere at sikre, at din indeksering er rigtig og at bruge det rigtige værktøj til opgaven.
Teknisk set tror jeg, at det kan opsummeres ved hjælp af følgende 2 udførelsesplaner taget fra mit blogindlæg:
UNION ALL
Udførelsesplan
JOIN
Udførelsesplan
Praktiske resultater
I praksis er forskellen på et klynget indeksopslag ubetydelig: