Один COALESCE в условии способен превратить быстрый Hash Join в мучительно долгий Nested Loop. Убрать оператор COALESCE — и оценка стоимости плана упадёт в десятки раз, а запрос отработает мнгновенно. В данных при этом не меняется ничего: та же колонка, та же статистика, та же селективность, просто…
Почему COALESCE ломает план PostgreSQL и как научить планировщик считать его селективность?
Это краткое изложение. Полный текст материала доступен на сайте источника.