add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
Help with an interesting Postgres question: Why isn't an Index Only Scan used on a partition accessed via the parent table?.
CREATE TABLE
INSERT 0 9
setseed
SELECT 1
INSERT 0 420000
id start_time end_time
109 2024-02-13 19:11:16.932586 2024-02-13 23:21:19.459637
532 2023-08-14 03:29:31.850986 2023-08-14 23:02:38.318462
764 2024-02-16 18:59:49.274986 2024-02-17 09:49:41.507871
1120 2023-12-08 15:34:15.934186 2023-12-09 10:11:29.016729
1823 2024-01-03 02:28:05.681386 2024-01-03 22:33:53.993674
1833 2023-07-25 03:03:21.185386 2023-07-25 16:19:16.143746
2367 2023-04-26 18:20:07.054186 2023-04-27 03:11:52.386872
2832 2023-03-06 08:20:54.631786 2023-03-07 04:33:21.163002
3069 2024-01-13 05:51:23.892586 2024-01-13 11:23:46.139657
3085 2023-09-21 04:22:12.103786 2023-09-21 07:38:05.960571
4479 2023-03-29 21:26:04.145386 2023-03-30 03:28:54.530147
4537 2023-11-19 11:33:02.551786 2023-11-20 07:43:05.853259
4596 2024-01-29 11:18:14.791786 2024-01-29 16:19:13.644006
4639 2023-11-09 07:07:09.396586 2023-11-09 22:58:39.120375
SELECT 14
CREATE INDEX
VACUUM
PREPARE
QUERY PLAN
Bitmap Heap Scan on public.time_interval (cost=43.54..1940.71 rows=936 width=20) (actual time=0.527..1.289 rows=901 loops=1)
  Output: id, start_time, end_time
  Recheck Cond: (tsrange(COALESCE(time_interval.start_time, 'infinity'::timestamp without time zone), COALESCE(time_interval.end_time, 'infinity'::timestamp without time zone)) && '["2024-02-10 10:00:00","2024-02-10 17:00:00"]'::tsrange)
  Heap Blocks: exact=765
  -> Bitmap Index Scan on gist_idx (cost=0.00..43.30 rows=936 width=0) (actual time=0.434..0.434 rows=901 loops=1)
        Index Cond: (tsrange(COALESCE(time_interval.start_time, 'infinity'::timestamp without time zone), COALESCE(time_interval.end_time, 'infinity'::timestamp without time zone)) && '["2024-02-10 10:00:00","2024-02-10 17:00:00"]'::tsrange)
Planning Time: 0.245 ms
Execution Time: 1.356 ms
EXPLAIN
PREPARE
QUERY PLAN
Seq Scan on public.time_interval (cost=0.00..8976.14 rows=15455 width=20) (actual time=0.007..35.399 rows=901 loops=1)
  Output: id, start_time, end_time
  Filter: (((time_interval.start_time <= '2024-02-10 17:00:00'::timestamp without time zone) OR (time_interval.start_time IS NULL)) AND (('2024-02-10 10:00:00'::timestamp without time zone <= time_interval.end_time) OR (time_interval.end_time IS NULL)))
  Rows Removed by Filter: 419108
Planning Time: 0.082 ms
Execution Time: 35.446 ms
EXPLAIN