Альтернатива IN в SQL, чтобы выполнить его за меньшее время - PullRequest
1 голос
/ 08 мая 2020

Я написал запрос, но хочу знать, будет ли это время выполнения медленным или быстрым? Можем ли мы использовать любую альтернативу IN, поскольку в таком небольшом запросе он используется 4 раза. Можно ли лучше написать этот запрос? Более того, я смущен, потому что кто-то хочет запросить его с большим количеством ep_et_id, и то, как я написал, это не место, где можно упомянуть ep_et_id

Приведенный ниже запрос извлекает 74133 результатов в 14,55 сек в прямом Postgres звонке. Но я считаю, что это займет больше времени, если я вызову его с веб-страницы.

select lp, ob_id
from ob_in
where ob_id in (select ob_id
                from ob_for_e
                where ep_et_id in (select ep_et_id 
                                   from rrts rep
                                   left join rrts_inf rinf on rep.rrts_id = rinf.rrts_id
                                   where rrts_type in ('FR','IN')
                                   and rinf.status in('V')))

Таблицы, которые я здесь использую: ob_in, ob_for_e, rrts, rrts_inf Точка местоположения lp находятся в таблице ob_in, и я поставил много IN для извлечения идентификаторов из таблицы, чтобы применить последнее условие к таблице rrts_inf для типа FR, IN и статуса с V

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...