Блеск и нищета PostgreSQL
Давно сталкиваюсь в продакшене с проблемой, что выборки с подзапросами выполняются неприлично долго. Причем в тестах воспроизвести такое поведение никак не удавалось. И вот наконец получилось! Оказывается, проблема существует всегда, но становится заметной только на таблицах с миллионами записей - простейшая выборка "тормозит", если увеличиваются _значения_ используемых в выборке идентификаторов, потому в таблицах с десятками тысяч и менее записей баг просто незаметен. Сначала приведу один из рабочих запросов, над которыми ломал голову: SELECT d.id AS document_id, d.phone_number AS phone, r.name AS region, p.code AS point, p.trademark AS point_trademark, (case when p.is_priority then '1' else '' end) AS color_it, c.code AS center_code, a.value AS status, u2.name AS user_2, tp.name AS template, c.name AS center, (a.save_date at time zone interval '04:00')::date AS work_date, date_trunc('second',(a.save_date at time zone interval ...