Какие оптимизации возможны в моем запросе? - PullRequest
0 голосов
/ 25 сентября 2019

Я ищу способ лучше структурировать свой запрос, чтобы уменьшить время выполнения.Мой главный вопрос - как заменить оператор LEFT JOIN на более эффективную конструкцию.В настоящее время я не могу понять, что выбрать.

SELECT *
   FROM v_time_booking tb
     LEFT JOIN employee e ON e.employee_short_id::text = tb.employee_id::text
     LEFT JOIN employee_work_contract ewc ON e.employee_id = ewc.employee_id AND ewc.begin_date <= tb.booking_day AND ewc.end_date >= tb.booking_day
     LEFT JOIN employee_skill_level_project esl ON e.employee_id = esl.employee_id AND esl.project_id::text = tb.project_id::text
     LEFT JOIN skill_level_hour_rate slhr ON slhr.skill_level_id = esl.skill_level_id AND slhr.project_id::text = esl.project_id::text
     LEFT JOIN skill_level skl ON skl.skill_level_id = esl.skill_level_id
     LEFT JOIN project p ON p.project_id::text = tb.project_id::text
     LEFT JOIN hourly_office_costs hoc ON tb.booking_day >= hoc.start AND tb.booking_day <= hoc."end";
...