в каждом запросе:
order by case when u.id = any('{1,2}'::int[]) then u.name else 'employee' end -- массив это параметр запроса
тут полный пример для анализа https://gist.github.com/mche/485fa4a7180fb414f1ef4c85be4a84a3
я правильно понимаю, что раз невозможно создать индекс, то и попадон в сортровке?
У меня -- быстро explain (analyze, buffers, timing) select h.* from users u join history h on u.id=h.user_id where u.id = any('{1,2}'::int[]) limit 10; QUERY PLAN > --------------------------------------------------------------------------------------------------------------------------> Limit (cost=13.69..153.26 rows=10 width=48) (actual time=0.161..0.196 rows=10 loops=1)
Это первый запрос, нет проблем, а второй - инверсное условие траблы: where u.id != all('{1,2}'::int[])
Обсуждают сегодня