UNION combines results and removes duplicates.
UNION ALL combines results and keeps duplicates.
SELECT city FROM customers UNION SELECT city FROM suppliers;
Duplicates are removed.
SELECT city FROM customers UNION ALL SELECT city FROM suppliers;
Duplicates remain.
Which is faster?
Usually UNION ALL, because it doesn't need to perform duplicate elimination.
Use:
UNION→ when duplicates must be removedUNION ALL→ when you know duplicates are valid or don't care about them