Ускорить простой запрос нужно проверить входят ли ид. записей из массива в таблицу Код (Text): SELECT ARRAY( SELECT DISTINCT "Event" FROM "Documents" WHERE "Event" = ANY(ARRAY[1005657, 1005664, 7122]) LIMIT 3 ) Для этого запроса такой план. Код (Text): "Result (cost=0.93..0.94 rows=1 width=32) (actual time=2.110..2.111 rows=1 loops=1)" " Buffers: shared hit=213" " InitPlan 1 (returns $0)" " -> Limit (cost=0.43..0.93 rows=3 width=4) (actual time=0.042..2.100 rows=3 loops=1)" " Buffers: shared hit=213" " -> Unique (cost=0.43..768.10 rows=4542 width=4) (actual time=0.040..2.096 rows=3 loops=1)" " Buffers: shared hit=213" " -> Index Only Scan using "iEvent" on "Documents" (cost=0.43..748.72 rows=7751 width=4) (actual time=0.039..1.532 rows=7709 loops=1)" " Index Cond: ("Event" = ANY ('{1005657,1005664,7122}'::integer[]))" " Heap Fetches: 72" " Buffers: shared hit=213" "Planning time: 0.510 ms" "Execution time: 2.149 ms" Проблема такая, что для ид. 7122 в таблице "Documents" существует записей 7709, достаем эти все записи. Хотелось бы переписать запрос, чтобы не все записи вытаскивали, а только до первой существующей.
Сделай пожалуйста песочницу на https://www.db-fiddle.com/ - там pgsql тоже возможен. Заполни несколько строк чтобы был показательный пример.