Запрос медленный. Какой EXPLAIN-вывод указывает на проблему, и какой выглядит нормально?
middle
correct_vs_wrong
#33
Вариант 1
EXPLAIN (ANALYZE, BUFFERS)
SELECT * FROM events WHERE user_id = 42 AND created_at > NOW() - INTERVAL '1 day';
Seq Scan on events (cost=0.00..152340.00 rows=12 width=120)
(actual time=5.234..2845.012 rows=8 loops=1)
Filter: ((user_id = 42) AND (created_at > (now() - '1 day'::interval)))
Rows Removed by Filter: 9999992
Buffers: shared read=89134
Planning Time: 0.123 ms
Execution Time: 2845.567 ms
Вариант 2
EXPLAIN (ANALYZE, BUFFERS)
SELECT * FROM events WHERE user_id = 42 AND created_at > NOW() - INTERVAL '1 day';
Index Scan using ix_events_user_created on events
(cost=0.42..23.45 rows=8 width=120)
(actual time=0.023..0.067 rows=8 loops=1)
Index Cond: ((user_id = 42) AND (created_at > (now() - '1 day'::interval)))
Buffers: shared hit=12
Planning Time: 0.089 ms
Execution Time: 0.123 ms
Чтобы решить вопрос и сохранить попытку — войди.