1. Осторожнее с проверками значений "не равно" (!=, not in, not between)
NULL не пройдёт ни одну из этих проверок, такие записи будут отфильтрованы.
Если их необходимо сохранить, используйте coalesce(t1.a,'X') != 'Y'
2. Всегда выполняйте регресс-тестирование на значительном объёме данных, а не на нескольких кейсах.
Используйте full join или except (в обе стороны)
3. Не присоединяйте таблицу с помощью left join, чтобы затем отфильтровать значения в ней в where.
Это фактически inner join, только выглядит непрофессионально и читается плохо.
4. Не используйте union, если нет необходимости избавиться от дублей. union all сильно выигрывает по производительности и показывает читающему код, что дублей в результатах не ожидается.
#SQLtips