PostgreSQL 19 научится превращать NOT IN в анти-джойн
В PostgreSQL 19 планировщик будет преобразовывать запросы NOT IN в NOT EXISTS, когда гарантировано отсутствие NULL, что позволяет использовать анти-джойны (Nested Loop, Merge Join, Hash Join). В примере автора запрос на 1 млн строк в PG18 не завершался, а в PG19 beta 4 выполнился за 3,2 секунды.
- PG19 преобразует NOT IN в анти-джойн при гарантии NOT NULL
- Пример на 1 млн строк: PG18 не завершился, PG19 beta 4 — 3,2 секунды
- С индексом внешнего ключа время падает с 17 199 мс до 3,2 мс
- Доступны Nested Loop, Merge Join и Hash Join вместо SubPlan
Читать дальше
Софт