ДФ
Есть один занятный вопрос по оптимизации запроса на select из одной таблицы разных строк по разным параметрам.
Опишу коротко кейс: есть единая таблица связей ID внешней и внутренней системы, необходим запрос на единоразовую выгрузку всех данных по заданным ID и параметрам, условно 2 параметра отбора - 2 строки. В один общий select выделять нельзя, потому как в разных параметрах отбора могут совпадать другие параметры (например, type и ID, в разных type могут быть одни и те же ID).
На данный момент написан глупейший join на скорую руку, потому как с такими запросами дела никто не имел. Может кто подскажет?
Пример запроса:
SELECT pr_aee.external_id as project_id, task_aee.external_id as issue_id, user_aee.external_id as user_id
FROM any_external_entities as pr_aee
LEFT JOIN any_external_entities task_aee on task_aee.entity_id = $3 AND task_aee.entity_type = $4
AND task_aee.external_provider = $5 AND task_aee.external_source = $6
JOIN any_external_entities user_aee on user_aee.entity_id = $5 AND user_aee.entity_type = $6
AND user_aee.external_provider = $5 AND user_aee.external_source = $6
WHERE pr_aee.entity_id = $1 AND pr_aee.entity_type = $2 AND pr_aee.external_provider = $5
AND pr_aee.external_source = $6