UNION gör en implicit DISTINCT, så den går långsammare än UNION ALL, som förutsätter att det du smäller samman är unikt (vet inte vad du har för PK eller unique constraints i dina tabeller).
Gräsligt query du skaffat dig i alla fall.. jag skulle råda till omdesign, men det kanske inte är aktuellt om tabellerna nu var så stora