При выполнении нескольких операций SELECT, подобных этому UNION, вы можете создавать каждую часть как отдельный запрос. Затем сделайте основной запрос, который объединяет подзапросы. Например:
(SELECT * FROM QueryFirst
UNION ALL
SELECT * FROM QuerySecond)
UNION ALL
(SELECT * FROM QueryThird
UNION ALL
SELECT * FROM QueryFourth);
Это позволяет разбить проблему на более мелкие патроны, которые можно оценивать, тестировать и оптимизировать независимо. Это должно помочь вам определить дубликаты, перекрывающиеся и медленные запросы. Вы можете обнаружить, что вам не нужно так много СОЮЗОВ, чтобы получить набор данных, который вы ищете.