Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
 push predicate to subquery with aggregate  [new]
bdsm_sql
Member

Откуда:
Сообщений: 913
привет. пытаюсь разобраться с постгресом, воюю с запросом..
я правильно понимаю, что протолкнуть условие в подзапрос с агрегацией тупо невозможно?

select *
from a
join (select id, max(date) from b) b on b.id = a.id
where a.col = 'some'


есть индекс на b.id, условие a.col возвращает 1 строку, что видно и в плане, но индекс хоть убей не используется. если форсировать nested loops, один хрен подзапрос сканируется полностью, лишь затем идёт соединение.

подскажите плиз, я что-то не понимаю, или постгрес этого не умеет?
27 сен 17, 18:06    [20827505]     Ответить | Цитировать Сообщить модератору
 Re: push predicate to subquery with aggregate  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 3449
bdsm_sql
привет. пытаюсь разобраться с постгресом, воюю с запросом..
я правильно понимаю, что протолкнуть условие в подзапрос с агрегацией тупо невозможно?

select *
from a
join (select id, max(date) from b) b on b.id = a.id
where a.col = 'some'


есть индекс на b.id, условие a.col возвращает 1 строку, что видно и в плане, но индекс хоть убей не используется. если форсировать nested loops, один хрен подзапрос сканируется полностью, лишь затем идёт соединение.

подскажите плиз, я что-то не понимаю, или постгрес этого не умеет?


Не умеет. Используйте LATERAL JOIN и вносите условие внутрь аггрегата явно.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
27 сен 17, 18:08    [20827511]     Ответить | Цитировать Сообщить модератору
 Re: push predicate to subquery with aggregate  [new]
Melkij
Member

Откуда: Санкт-Петербург
Сообщений: 348
bdsm_sql,

Используйте lateral join (если версия pg актуальная, конечно)
Впрочем одно значение можно и коррелирующим запросом в select вытянуть.
27 сен 17, 18:09    [20827513]     Ответить | Цитировать Сообщить модератору
 Re: push predicate to subquery with aggregate  [new]
bdsm_sql
Member

Откуда:
Сообщений: 913
ага, про воркэраунды в целом ясно, запрос я бы сам написал.. но orm..(
27 сен 17, 18:14    [20827520]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить