The UNION and UNION ALL command look very similar but under the covers they do different things. The main difference between the two commands, is that UNION selects only distinct values, while UNION ALL selects all values (including duplicates).
Since the UNION statement eliminates all duplicate rows it does a SELECT DISTINCT on the result set. A SELECT DISTINCT is going to cause a table scan which can be a performance killer when you are dealing with large tables. If you know that all of the records returned from your queries are unique then use a UNION ALL instead. The UNION ALL should yield better results in terms of performance.
So now that you know the difference between the two statements you should be able to avoid future performance problems. Like G.I. Joe always said "KNOWING is half the battle".