explain.depesz.com

PostgreSQL's explain analyze made readable

Result: Mip3

Settings
# exclusive inclusive rows x rows loops node
1. 0.013 2,727.528 ↑ 28.6 7 1

Sort (cost=255,189.84..255,190.34 rows=200 width=56) (actual time=2,727.527..2,727.528 rows=7 loops=1)

  • Output: (timezone('America/Los_Angeles'::text, time_bucket('1 day'::interval, timezone('America/Los_Angeles'::text, (min(campaign_agg_1.time)))))), (COALESCE(sum(campaign_agg.send_count), '0'::numeric)), ((((COALESCE(sum(campaign_agg.open_count), '0'::numeric))::double precision / (COALESCE(sum(campaign_agg.send_count), '0'::numeric))::double precision) * '100'::double precision)), ((((COALESCE(sum(campaign_agg.click_count), '0'::numeric))::double precision / (COALESCE(sum(campaign_agg.send_count), '0'::numeric))::double precision) * '100'::double precision))
  • Sort Key: (timezone('America/Los_Angeles'::text, time_bucket('1 day'::interval, timezone('America/Los_Angeles'::text, (min(campaign_agg_1.time))))))
  • Sort Method: quicksort Memory: 25kB
  • Buffers: shared hit=1349622
2. 234.409 2,727.515 ↑ 28.6 7 1

HashAggregate (cost=255,172.19..255,182.19 rows=200 width=56) (actual time=2,727.507..2,727.515 rows=7 loops=1)

  • Output: (timezone('America/Los_Angeles'::text, time_bucket('1 day'::interval, timezone('America/Los_Angeles'::text, (min(campaign_agg_1.time)))))), COALESCE(sum(campaign_agg.send_count), '0'::numeric), (((COALESCE(sum(campaign_agg.open_count), '0'::numeric))::double precision / (COALESCE(sum(campaign_agg.send_count), '0'::numeric))::double precision) * '100'::double precision), (((COALESCE(sum(campaign_agg.click_count), '0'::numeric))::double precision / (COALESCE(sum(campaign_agg.send_count), '0'::numeric))::double precision) * '100'::double precision)
  • Group Key: timezone('America/Los_Angeles'::text, time_bucket('1 day'::interval, timezone('America/Los_Angeles'::text, (min(campaign_agg_1.time)))))
  • Buffers: shared hit=1349622
3. 909.189 2,493.106 ↓ 1.1 1,195,379 1

Nested Loop Left Join (cost=209,137.76..238,573.58 rows=1,106,574 width=32) (actual time=219.625..2,493.106 rows=1,195,379 loops=1)

  • Output: timezone('America/Los_Angeles'::text, time_bucket('1 day'::interval, timezone('America/Los_Angeles'::text, (min(campaign_agg_1.time))))), campaign_agg.send_count, campaign_agg.open_count, campaign_agg.click_count
  • Buffers: shared hit=1349622
4. 10.270 251.044 ↓ 141.8 28,359 1

Finalize GroupAggregate (cost=209,137.76..209,307.00 rows=200 width=12) (actual time=219.582..251.044 rows=28,359 loops=1)

  • Output: campaign_agg_1.blast_id, min(campaign_agg_1.time)
  • Group Key: campaign_agg_1.blast_id
  • Filter: (min(campaign_agg_1.time) >= '2018-11-17 08:00:00+00'::timestamp with time zone)
  • Rows Removed by Filter: 4304
  • Buffers: shared hit=16722
5. 0.000 240.774 ↓ 32.8 32,786 1

Gather Merge (cost=209,137.76..209,297.50 rows=1,000 width=12) (actual time=217.247..240.774 rows=32,786 loops=1)

  • Output: campaign_agg_1.blast_id, (PARTIAL min(campaign_agg_1.time))
  • Workers Planned: 5
  • Workers Launched: 5
  • Buffers: shared hit=54241 read=1
6. 14.052 1,247.550 ↓ 27.3 5,464 6

Partial GroupAggregate (cost=208,137.68..208,177.00 rows=200 width=12) (actual time=204.912..207.925 rows=5,464 loops=6)

  • Output: campaign_agg_1.blast_id, PARTIAL min(campaign_agg_1.time)
  • Group Key: campaign_agg_1.blast_id
  • Buffers: shared hit=54241 read=1
  • Worker 0: actual time=203.367..206.201 rows=5202 loops=1
  • Buffers: shared hit=7511
  • Worker 1: actual time=203.305..206.184 rows=5225 loops=1
  • Buffers: shared hit=7397
  • Worker 2: actual time=203.353..206.192 rows=5122 loops=1
  • Buffers: shared hit=7424 read=1
  • Worker 3: actual time=203.312..206.103 rows=5093 loops=1
  • Buffers: shared hit=7387
  • Worker 4: actual time=203.350..206.242 rows=5255 loops=1
  • Buffers: shared hit=7800
7. 15.642 1,233.498 ↓ 1.1 5,483 6

Sort (cost=208,137.68..208,150.12 rows=4,976 width=12) (actual time=204.908..205.583 rows=5,483 loops=6)

  • Output: campaign_agg_1.blast_id, campaign_agg_1.time
  • Sort Key: campaign_agg_1.blast_id
  • Sort Method: quicksort Memory: 517kB
  • Buffers: shared hit=54241 read=1
  • Worker 0: actual time=203.363..203.910 rows=5215 loops=1
  • Buffers: shared hit=7511
  • Worker 1: actual time=203.300..203.879 rows=5245 loops=1
  • Buffers: shared hit=7397
  • Worker 2: actual time=203.347..203.902 rows=5137 loops=1
  • Buffers: shared hit=7424 read=1
  • Worker 3: actual time=203.307..203.864 rows=5103 loops=1
  • Buffers: shared hit=7387
  • Worker 4: actual time=203.346..203.910 rows=5284 loops=1
  • Buffers: shared hit=7800
8. 4.044 1,217.856 ↓ 1.1 5,483 6

Append (cost=0.00..207,832.13 rows=4,976 width=12) (actual time=111.476..202.976 rows=5,483 loops=6)

  • Buffers: shared hit=54206 read=1
  • Worker 0: actual time=110.226..201.526 rows=5215 loops=1
  • Buffers: shared hit=7504
  • Worker 1: actual time=109.825..201.434 rows=5245 loops=1
  • Buffers: shared hit=7390
  • Worker 2: actual time=109.981..201.529 rows=5137 loops=1
  • Buffers: shared hit=7417 read=1
  • Worker 3: actual time=109.982..201.508 rows=5103 loops=1
  • Buffers: shared hit=7380
  • Worker 4: actual time=109.810..201.470 rows=5284 loops=1
  • Buffers: shared hit=7793
9. 0.006 0.006 ↓ 0.0 0 6

Parallel Seq Scan on public.campaign_agg campaign_agg_1 (cost=0.00..0.00 rows=1 width=12) (actual time=0.000..0.001 rows=0 loops=6)

  • Output: campaign_agg_1.blast_id, campaign_agg_1.time
  • Filter: ((campaign_agg_1.time < '2018-11-24 08:00:00+00'::timestamp with time zone) AND (campaign_agg_1.send_count > 0) AND (campaign_agg_1.client_id = 1070) AND (campaign_agg_1.time >= ('2018-11-17 08:00:00+00'::timestamp with time zone - '1 day'::interval)))
  • Worker 0: actual time=0.000..0.000 rows=0 loops=1
  • Worker 1: actual time=0.000..0.001 rows=0 loops=1
  • Worker 2: actual time=0.001..0.001 rows=0 loops=1
  • Worker 3: actual time=0.000..0.000 rows=0 loops=1
  • Worker 4: actual time=0.000..0.000 rows=0 loops=1
10. 0.030 0.030 ↓ 0.0 0 6

Parallel Index Scan using _hyper_8_14_chunk_campaign_agg_time_idx on _timescaledb_internal._hyper_8_14_chunk (cost=0.42..2.64 rows=1 width=12) (actual time=0.005..0.005 rows=0 loops=6)

  • Output: _hyper_8_14_chunk.blast_id, _hyper_8_14_chunk.time
  • Index Cond: ((_hyper_8_14_chunk.time >= ('2018-11-17 08:00:00+00'::timestamp with time zone - '1 day'::interval)) AND (_hyper_8_14_chunk.time < '2018-11-24 08:00:00+00'::timestamp with time zone))
  • Filter: ((_hyper_8_14_chunk.send_count > 0) AND (_hyper_8_14_chunk.client_id = 1070))
  • Buffers: shared hit=3
  • Worker 0: actual time=0.003..0.003 rows=0 loops=1
  • Worker 1: actual time=0.003..0.003 rows=0 loops=1
  • Worker 2: actual time=0.004..0.004 rows=0 loops=1
  • Worker 3: actual time=0.003..0.003 rows=0 loops=1
  • Worker 4: actual time=0.003..0.003 rows=0 loops=1
11. 0.012 0.012 ↓ 0.0 0 6

Parallel Index Scan using _hyper_8_12_chunk_campaign_agg_time_idx on _timescaledb_internal._hyper_8_12_chunk (cost=0.42..2.64 rows=1 width=12) (actual time=0.002..0.002 rows=0 loops=6)

  • Output: _hyper_8_12_chunk.blast_id, _hyper_8_12_chunk.time
  • Index Cond: ((_hyper_8_12_chunk.time >= ('2018-11-17 08:00:00+00'::timestamp with time zone - '1 day'::interval)) AND (_hyper_8_12_chunk.time < '2018-11-24 08:00:00+00'::timestamp with time zone))
  • Filter: ((_hyper_8_12_chunk.send_count > 0) AND (_hyper_8_12_chunk.client_id = 1070))
  • Buffers: shared hit=3
  • Worker 0: actual time=0.001..0.001 rows=0 loops=1
  • Worker 1: actual time=0.001..0.001 rows=0 loops=1
  • Worker 2: actual time=0.001..0.001 rows=0 loops=1
  • Worker 3: actual time=0.001..0.001 rows=0 loops=1
  • Worker 4: actual time=0.001..0.001 rows=0 loops=1
12. 0.012 0.012 ↓ 0.0 0 6

Parallel Index Scan using _hyper_8_17_chunk_campaign_agg_time_idx on _timescaledb_internal._hyper_8_17_chunk (cost=0.56..2.78 rows=1 width=12) (actual time=0.002..0.002 rows=0 loops=6)

  • Output: _hyper_8_17_chunk.blast_id, _hyper_8_17_chunk.time
  • Index Cond: ((_hyper_8_17_chunk.time >= ('2018-11-17 08:00:00+00'::timestamp with time zone - '1 day'::interval)) AND (_hyper_8_17_chunk.time < '2018-11-24 08:00:00+00'::timestamp with time zone))
  • Filter: ((_hyper_8_17_chunk.send_count > 0) AND (_hyper_8_17_chunk.client_id = 1070))
  • Buffers: shared hit=4
  • Worker 0: actual time=0.001..0.001 rows=0 loops=1
  • Worker 1: actual time=0.001..0.001 rows=0 loops=1
  • Worker 2: actual time=0.001..0.001 rows=0 loops=1
  • Worker 3: actual time=0.001..0.001 rows=0 loops=1
  • Worker 4: actual time=0.001..0.001 rows=0 loops=1
13. 1,104.454 1,208.748 ↓ 1.1 5,483 6

Parallel Bitmap Heap Scan on _timescaledb_internal._hyper_8_1304_chunk _hyper_8_1304_chunk_1 (cost=28,362.02..207,770.37 rows=4,952 width=12) (actual time=111.466..201.458 rows=5,483 loops=6)

  • Output: _hyper_8_1304_chunk_1.blast_id, _hyper_8_1304_chunk_1.time
  • Recheck Cond: ((_hyper_8_1304_chunk_1.client_id = 1070) AND (_hyper_8_1304_chunk_1.time >= ('2018-11-17 08:00:00+00'::timestamp with time zone - '1 day'::interval)) AND (_hyper_8_1304_chunk_1.time < '2018-11-24 08:00:00+00'::timestamp with time zone))
  • Filter: (_hyper_8_1304_chunk_1.send_count > 0)
  • Rows Removed by Filter: 221132
  • Heap Blocks: exact=10267
  • Buffers: shared hit=54106
  • Worker 0: actual time=110.219..200.035 rows=5215 loops=1
  • Buffers: shared hit=7487
  • Worker 1: actual time=109.818..199.951 rows=5245 loops=1
  • Buffers: shared hit=7380
  • Worker 2: actual time=109.973..200.045 rows=5137 loops=1
  • Buffers: shared hit=7407
  • Worker 3: actual time=109.973..200.036 rows=5103 loops=1
  • Buffers: shared hit=7363
  • Worker 4: actual time=109.803..199.977 rows=5284 loops=1
  • Buffers: shared hit=7781
14. 104.294 104.294 ↑ 1.1 1,359,685 1

Bitmap Index Scan on _hyper_8_1304_chunk_campaign_agg__client_id__time__idx (cost=0.00..28,355.83 rows=1,475,189 width=0) (actual time=104.294..104.294 rows=1,359,685 loops=1)

  • Index Cond: ((_hyper_8_1304_chunk_1.client_id = 1070) AND (_hyper_8_1304_chunk_1.time >= ('2018-11-17 08:00:00+00'::timestamp with time zone - '1 day'::interval)) AND (_hyper_8_1304_chunk_1.time < '2018-11-24 08:00:00+00'::timestamp with time zone))
  • Buffers: shared hit=6421
15. 0.282 0.282 ↓ 0.0 0 6

Parallel Index Scan using _hyper_8_15_chunk_campaign_agg_time_idx on _timescaledb_internal._hyper_8_15_chunk (cost=0.44..2.66 rows=1 width=12) (actual time=0.046..0.047 rows=0 loops=6)

  • Output: _hyper_8_15_chunk.blast_id, _hyper_8_15_chunk.time
  • Index Cond: ((_hyper_8_15_chunk.time >= ('2018-11-17 08:00:00+00'::timestamp with time zone - '1 day'::interval)) AND (_hyper_8_15_chunk.time < '2018-11-24 08:00:00+00'::timestamp with time zone))
  • Filter: ((_hyper_8_15_chunk.send_count > 0) AND (_hyper_8_15_chunk.client_id = 1070))
  • Buffers: shared hit=3
  • Worker 0: actual time=0.037..0.037 rows=0 loops=1
  • Worker 1: actual time=0.053..0.053 rows=0 loops=1
  • Worker 2: actual time=0.045..0.045 rows=0 loops=1
  • Worker 3: actual time=0.046..0.046 rows=0 loops=1
  • Worker 4: actual time=0.050..0.050 rows=0 loops=1
16. 0.252 0.252 ↓ 0.0 0 6

Parallel Index Scan using _hyper_8_1298_chunk_campaign_agg_time_idx on _timescaledb_internal._hyper_8_1298_chunk (cost=0.44..2.66 rows=1 width=12) (actual time=0.042..0.042 rows=0 loops=6)

  • Output: _hyper_8_1298_chunk.blast_id, _hyper_8_1298_chunk.time
  • Index Cond: ((_hyper_8_1298_chunk.time >= ('2018-11-17 08:00:00+00'::timestamp with time zone - '1 day'::interval)) AND (_hyper_8_1298_chunk.time < '2018-11-24 08:00:00+00'::timestamp with time zone))
  • Filter: ((_hyper_8_1298_chunk.send_count > 0) AND (_hyper_8_1298_chunk.client_id = 1070))
  • Buffers: shared hit=4
  • Worker 0: actual time=0.053..0.053 rows=0 loops=1
  • Buffers: shared hit=4
  • Worker 1: actual time=0.040..0.040 rows=0 loops=1
  • Worker 2: actual time=0.034..0.034 rows=0 loops=1
  • Worker 3: actual time=0.041..0.041 rows=0 loops=1
  • Worker 4: actual time=0.040..0.040 rows=0 loops=1
17. 0.216 0.216 ↓ 0.0 0 6

Parallel Index Scan using _hyper_8_18_chunk_campaign_agg_time_idx on _timescaledb_internal._hyper_8_18_chunk (cost=0.56..2.78 rows=1 width=12) (actual time=0.036..0.036 rows=0 loops=6)

  • Output: _hyper_8_18_chunk.blast_id, _hyper_8_18_chunk.time
  • Index Cond: ((_hyper_8_18_chunk.time >= ('2018-11-17 08:00:00+00'::timestamp with time zone - '1 day'::interval)) AND (_hyper_8_18_chunk.time < '2018-11-24 08:00:00+00'::timestamp with time zone))
  • Filter: ((_hyper_8_18_chunk.send_count > 0) AND (_hyper_8_18_chunk.client_id = 1070))
  • Buffers: shared hit=5
  • Worker 0: actual time=0.033..0.033 rows=0 loops=1
  • Worker 1: actual time=0.037..0.037 rows=0 loops=1
  • Worker 2: actual time=0.047..0.047 rows=0 loops=1
  • Buffers: shared hit=5
  • Worker 3: actual time=0.027..0.027 rows=0 loops=1
  • Worker 4: actual time=0.037..0.037 rows=0 loops=1
18. 0.240 0.240 ↓ 0.0 0 6

Parallel Index Scan using _hyper_8_1300_chunk_campaign_agg_time_idx on _timescaledb_internal._hyper_8_1300_chunk (cost=0.42..2.64 rows=1 width=12) (actual time=0.040..0.040 rows=0 loops=6)

  • Output: _hyper_8_1300_chunk.blast_id, _hyper_8_1300_chunk.time
  • Index Cond: ((_hyper_8_1300_chunk.time >= ('2018-11-17 08:00:00+00'::timestamp with time zone - '1 day'::interval)) AND (_hyper_8_1300_chunk.time < '2018-11-24 08:00:00+00'::timestamp with time zone))
  • Filter: ((_hyper_8_1300_chunk.send_count > 0) AND (_hyper_8_1300_chunk.client_id = 1070))
  • Buffers: shared hit=4
  • Worker 0: actual time=0.034..0.034 rows=0 loops=1
  • Worker 1: actual time=0.040..0.040 rows=0 loops=1
  • Worker 2: actual time=0.036..0.036 rows=0 loops=1
  • Worker 3: actual time=0.050..0.050 rows=0 loops=1
  • Buffers: shared hit=4
  • Worker 4: actual time=0.040..0.040 rows=0 loops=1
19. 0.288 0.288 ↓ 0.0 0 6

Parallel Index Scan using _hyper_8_1296_chunk_campaign_agg_time_idx on _timescaledb_internal._hyper_8_1296_chunk (cost=0.44..2.66 rows=1 width=12) (actual time=0.048..0.048 rows=0 loops=6)

  • Output: _hyper_8_1296_chunk.blast_id, _hyper_8_1296_chunk.time
  • Index Cond: ((_hyper_8_1296_chunk.time >= ('2018-11-17 08:00:00+00'::timestamp with time zone - '1 day'::interval)) AND (_hyper_8_1296_chunk.time < '2018-11-24 08:00:00+00'::timestamp with time zone))
  • Filter: ((_hyper_8_1296_chunk.send_count > 0) AND (_hyper_8_1296_chunk.client_id = 1070))
  • Buffers: shared hit=5
  • Worker 0: actual time=0.057..0.057 rows=0 loops=1
  • Buffers: shared hit=4
  • Worker 1: actual time=0.043..0.043 rows=0 loops=1
  • Worker 2: actual time=0.059..0.059 rows=0 loops=1
  • Worker 3: actual time=0.038..0.038 rows=0 loops=1
  • Worker 4: actual time=0.044..0.044 rows=0 loops=1
  • Buffers: shared hit=1
20. 0.294 0.294 ↓ 0.0 0 6

Parallel Index Scan using _hyper_8_1299_chunk_campaign_agg_time_idx on _timescaledb_internal._hyper_8_1299_chunk (cost=0.44..2.66 rows=1 width=12) (actual time=0.049..0.049 rows=0 loops=6)

  • Output: _hyper_8_1299_chunk.blast_id, _hyper_8_1299_chunk.time
  • Index Cond: ((_hyper_8_1299_chunk.time >= ('2018-11-17 08:00:00+00'::timestamp with time zone - '1 day'::interval)) AND (_hyper_8_1299_chunk.time < '2018-11-24 08:00:00+00'::timestamp with time zone))
  • Filter: ((_hyper_8_1299_chunk.send_count > 0) AND (_hyper_8_1299_chunk.client_id = 1070))
  • Buffers: shared hit=5
  • Worker 0: actual time=0.039..0.039 rows=0 loops=1
  • Worker 1: actual time=0.045..0.045 rows=0 loops=1
  • Buffers: shared hit=1
  • Worker 2: actual time=0.046..0.046 rows=0 loops=1
  • Worker 3: actual time=0.059..0.059 rows=0 loops=1
  • Buffers: shared hit=4
  • Worker 4: actual time=0.045..0.045 rows=0 loops=1
21. 0.168 0.168 ↓ 0.0 0 6

Parallel Index Scan using _hyper_8_1080_chunk_campaign_agg_time_idx on _timescaledb_internal._hyper_8_1080_chunk (cost=0.56..2.78 rows=1 width=12) (actual time=0.028..0.028 rows=0 loops=6)

  • Output: _hyper_8_1080_chunk.blast_id, _hyper_8_1080_chunk.time
  • Index Cond: ((_hyper_8_1080_chunk.time >= ('2018-11-17 08:00:00+00'::timestamp with time zone - '1 day'::interval)) AND (_hyper_8_1080_chunk.time < '2018-11-24 08:00:00+00'::timestamp with time zone))
  • Filter: ((_hyper_8_1080_chunk.send_count > 0) AND (_hyper_8_1080_chunk.client_id = 1070))
  • Buffers: shared hit=6
  • Worker 0: actual time=0.043..0.043 rows=0 loops=1
  • Buffers: shared hit=5
  • Worker 1: actual time=0.029..0.029 rows=0 loops=1
  • Worker 2: actual time=0.024..0.024 rows=0 loops=1
  • Buffers: shared hit=1
  • Worker 3: actual time=0.024..0.024 rows=0 loops=1
  • Worker 4: actual time=0.021..0.021 rows=0 loops=1
22. 0.198 0.198 ↓ 0.0 0 6

Parallel Index Scan using _hyper_8_16_chunk_campaign_agg_time_idx on _timescaledb_internal._hyper_8_16_chunk (cost=0.56..2.78 rows=1 width=12) (actual time=0.033..0.033 rows=0 loops=6)

  • Output: _hyper_8_16_chunk.blast_id, _hyper_8_16_chunk.time
  • Index Cond: ((_hyper_8_16_chunk.time >= ('2018-11-17 08:00:00+00'::timestamp with time zone - '1 day'::interval)) AND (_hyper_8_16_chunk.time < '2018-11-24 08:00:00+00'::timestamp with time zone))
  • Filter: ((_hyper_8_16_chunk.send_count > 0) AND (_hyper_8_16_chunk.client_id = 1070))
  • Buffers: shared hit=5
  • Worker 0: actual time=0.032..0.032 rows=0 loops=1
  • Worker 1: actual time=0.032..0.033 rows=0 loops=1
  • Worker 2: actual time=0.029..0.029 rows=0 loops=1
  • Worker 3: actual time=0.029..0.029 rows=0 loops=1
  • Worker 4: actual time=0.043..0.044 rows=0 loops=1
  • Buffers: shared hit=5
23. 0.132 0.132 ↓ 0.0 0 6

Parallel Index Scan using _hyper_8_19_chunk_campaign_agg_time_idx on _timescaledb_internal._hyper_8_19_chunk (cost=0.42..2.64 rows=1 width=12) (actual time=0.022..0.022 rows=0 loops=6)

  • Output: _hyper_8_19_chunk.blast_id, _hyper_8_19_chunk.time
  • Index Cond: ((_hyper_8_19_chunk.time >= ('2018-11-17 08:00:00+00'::timestamp with time zone - '1 day'::interval)) AND (_hyper_8_19_chunk.time < '2018-11-24 08:00:00+00'::timestamp with time zone))
  • Filter: ((_hyper_8_19_chunk.send_count > 0) AND (_hyper_8_19_chunk.client_id = 1070))
  • Buffers: shared hit=5
  • Worker 0: actual time=0.024..0.024 rows=0 loops=1
  • Worker 1: actual time=0.024..0.024 rows=0 loops=1
  • Worker 2: actual time=0.024..0.024 rows=0 loops=1
  • Worker 3: actual time=0.028..0.028 rows=0 loops=1
  • Buffers: shared hit=4
  • Worker 4: actual time=0.023..0.023 rows=0 loops=1
24. 0.264 0.264 ↓ 0.0 0 6

Parallel Index Scan using _hyper_8_21_chunk_campaign_agg_time_idx on _timescaledb_internal._hyper_8_21_chunk (cost=0.42..2.64 rows=1 width=12) (actual time=0.044..0.044 rows=0 loops=6)

  • Output: _hyper_8_21_chunk.blast_id, _hyper_8_21_chunk.time
  • Index Cond: ((_hyper_8_21_chunk.time >= ('2018-11-17 08:00:00+00'::timestamp with time zone - '1 day'::interval)) AND (_hyper_8_21_chunk.time < '2018-11-24 08:00:00+00'::timestamp with time zone))
  • Filter: ((_hyper_8_21_chunk.send_count > 0) AND (_hyper_8_21_chunk.client_id = 1070))
  • Buffers: shared hit=4
  • Worker 0: actual time=0.041..0.041 rows=0 loops=1
  • Worker 1: actual time=0.041..0.041 rows=0 loops=1
  • Worker 2: actual time=0.053..0.053 rows=0 loops=1
  • Worker 3: actual time=0.037..0.037 rows=0 loops=1
  • Worker 4: actual time=0.042..0.042 rows=0 loops=1
  • Buffers: shared hit=1
25. 0.246 0.246 ↓ 0.0 0 6

Parallel Index Scan using _hyper_8_1294_chunk_campaign_agg_time_idx on _timescaledb_internal._hyper_8_1294_chunk (cost=0.44..2.66 rows=1 width=12) (actual time=0.041..0.041 rows=0 loops=6)

  • Output: _hyper_8_1294_chunk.blast_id, _hyper_8_1294_chunk.time
  • Index Cond: ((_hyper_8_1294_chunk.time >= ('2018-11-17 08:00:00+00'::timestamp with time zone - '1 day'::interval)) AND (_hyper_8_1294_chunk.time < '2018-11-24 08:00:00+00'::timestamp with time zone))
  • Filter: ((_hyper_8_1294_chunk.send_count > 0) AND (_hyper_8_1294_chunk.client_id = 1070))
  • Buffers: shared hit=4
  • Worker 0: actual time=0.041..0.041 rows=0 loops=1
  • Worker 1: actual time=0.040..0.041 rows=0 loops=1
  • Worker 2: actual time=0.041..0.041 rows=0 loops=1
  • Worker 3: actual time=0.049..0.049 rows=0 loops=1
  • Buffers: shared hit=4
  • Worker 4: actual time=0.038..0.038 rows=0 loops=1
26. 0.810 0.810 ↓ 0.0 0 6

Parallel Index Scan using _hyper_8_23_chunk_campaign_agg_time_idx on _timescaledb_internal._hyper_8_23_chunk (cost=0.56..2.78 rows=1 width=12) (actual time=0.134..0.135 rows=0 loops=6)

  • Output: _hyper_8_23_chunk.blast_id, _hyper_8_23_chunk.time
  • Index Cond: ((_hyper_8_23_chunk.time >= ('2018-11-17 08:00:00+00'::timestamp with time zone - '1 day'::interval)) AND (_hyper_8_23_chunk.time < '2018-11-24 08:00:00+00'::timestamp with time zone))
  • Filter: ((_hyper_8_23_chunk.send_count > 0) AND (_hyper_8_23_chunk.client_id = 1070))
  • Buffers: shared hit=5 read=1
  • Worker 0: actual time=0.127..0.127 rows=0 loops=1
  • Worker 1: actual time=0.142..0.142 rows=0 loops=1
  • Worker 2: actual time=0.127..0.127 rows=0 loops=1
  • Buffers: shared read=1
  • Worker 3: actual time=0.135..0.135 rows=0 loops=1
  • Buffers: shared hit=1
  • Worker 4: actual time=0.143..0.143 rows=0 loops=1
27. 0.204 0.204 ↓ 0.0 0 6

Parallel Index Scan using _hyper_8_1301_chunk_campaign_agg_time_idx on _timescaledb_internal._hyper_8_1301_chunk (cost=0.42..2.64 rows=1 width=12) (actual time=0.033..0.034 rows=0 loops=6)

  • Output: _hyper_8_1301_chunk.blast_id, _hyper_8_1301_chunk.time
  • Index Cond: ((_hyper_8_1301_chunk.time >= ('2018-11-17 08:00:00+00'::timestamp with time zone - '1 day'::interval)) AND (_hyper_8_1301_chunk.time < '2018-11-24 08:00:00+00'::timestamp with time zone))
  • Filter: ((_hyper_8_1301_chunk.send_count > 0) AND (_hyper_8_1301_chunk.client_id = 1070))
  • Buffers: shared hit=3
  • Worker 0: actual time=0.030..0.030 rows=0 loops=1
  • Worker 1: actual time=0.033..0.034 rows=0 loops=1
  • Worker 2: actual time=0.029..0.029 rows=0 loops=1
  • Worker 3: actual time=0.033..0.033 rows=0 loops=1
  • Worker 4: actual time=0.033..0.034 rows=0 loops=1
28. 0.138 0.138 ↓ 0.0 0 6

Parallel Index Scan using _hyper_8_20_chunk_campaign_agg_time_idx on _timescaledb_internal._hyper_8_20_chunk (cost=0.43..2.65 rows=1 width=12) (actual time=0.023..0.023 rows=0 loops=6)

  • Output: _hyper_8_20_chunk.blast_id, _hyper_8_20_chunk.time
  • Index Cond: ((_hyper_8_20_chunk.time >= ('2018-11-17 08:00:00+00'::timestamp with time zone - '1 day'::interval)) AND (_hyper_8_20_chunk.time < '2018-11-24 08:00:00+00'::timestamp with time zone))
  • Filter: ((_hyper_8_20_chunk.send_count > 0) AND (_hyper_8_20_chunk.client_id = 1070))
  • Buffers: shared hit=4
  • Worker 0: actual time=0.032..0.032 rows=0 loops=1
  • Buffers: shared hit=4
  • Worker 1: actual time=0.004..0.004 rows=0 loops=1
  • Worker 2: actual time=0.022..0.023 rows=0 loops=1
  • Worker 3: actual time=0.027..0.027 rows=0 loops=1
  • Worker 4: actual time=0.027..0.027 rows=0 loops=1
29. 0.312 0.312 ↓ 0.0 0 6

Parallel Index Scan using _hyper_8_13_chunk_campaign_agg_time_idx on _timescaledb_internal._hyper_8_13_chunk (cost=0.43..2.65 rows=1 width=12) (actual time=0.052..0.052 rows=0 loops=6)

  • Output: _hyper_8_13_chunk.blast_id, _hyper_8_13_chunk.time
  • Index Cond: ((_hyper_8_13_chunk.time >= ('2018-11-17 08:00:00+00'::timestamp with time zone - '1 day'::interval)) AND (_hyper_8_13_chunk.time < '2018-11-24 08:00:00+00'::timestamp with time zone))
  • Filter: ((_hyper_8_13_chunk.send_count > 0) AND (_hyper_8_13_chunk.client_id = 1070))
  • Buffers: shared hit=6
  • Worker 0: actual time=0.058..0.059 rows=0 loops=1
  • Worker 1: actual time=0.063..0.063 rows=0 loops=1
  • Buffers: shared hit=4
  • Worker 2: actual time=0.056..0.056 rows=0 loops=1
  • Buffers: shared hit=1
  • Worker 3: actual time=0.043..0.043 rows=0 loops=1
  • Worker 4: actual time=0.048..0.048 rows=0 loops=1
  • Buffers: shared hit=1
30. 0.042 0.042 ↓ 0.0 0 6

Parallel Index Scan using _hyper_8_22_chunk_campaign_agg_time_idx on _timescaledb_internal._hyper_8_22_chunk (cost=0.44..2.66 rows=1 width=12) (actual time=0.007..0.007 rows=0 loops=6)

  • Output: _hyper_8_22_chunk.blast_id, _hyper_8_22_chunk.time
  • Index Cond: ((_hyper_8_22_chunk.time >= ('2018-11-17 08:00:00+00'::timestamp with time zone - '1 day'::interval)) AND (_hyper_8_22_chunk.time < '2018-11-24 08:00:00+00'::timestamp with time zone))
  • Filter: ((_hyper_8_22_chunk.send_count > 0) AND (_hyper_8_22_chunk.client_id = 1070))
  • Buffers: shared hit=4
  • Worker 0: actual time=0.002..0.002 rows=0 loops=1
  • Worker 1: actual time=0.004..0.004 rows=0 loops=1
  • Worker 2: actual time=0.007..0.007 rows=0 loops=1
  • Buffers: shared hit=1
  • Worker 3: actual time=0.014..0.014 rows=0 loops=1
  • Worker 4: actual time=0.002..0.002 rows=0 loops=1
31. 0.216 0.216 ↓ 0.0 0 6

Parallel Index Scan using _hyper_8_1302_chunk_campaign_agg_time_idx on _timescaledb_internal._hyper_8_1302_chunk (cost=0.42..2.64 rows=1 width=12) (actual time=0.036..0.036 rows=0 loops=6)

  • Output: _hyper_8_1302_chunk.blast_id, _hyper_8_1302_chunk.time
  • Index Cond: ((_hyper_8_1302_chunk.time >= ('2018-11-17 08:00:00+00'::timestamp with time zone - '1 day'::interval)) AND (_hyper_8_1302_chunk.time < '2018-11-24 08:00:00+00'::timestamp with time zone))
  • Filter: ((_hyper_8_1302_chunk.send_count > 0) AND (_hyper_8_1302_chunk.client_id = 1070))
  • Buffers: shared hit=4
  • Worker 0: actual time=0.040..0.040 rows=0 loops=1
  • Worker 1: actual time=0.038..0.038 rows=0 loops=1
  • Buffers: shared hit=4
  • Worker 2: actual time=0.031..0.032 rows=0 loops=1
  • Worker 3: actual time=0.038..0.038 rows=0 loops=1
  • Worker 4: actual time=0.037..0.037 rows=0 loops=1
32. 0.252 0.252 ↓ 0.0 0 6

Parallel Index Scan using _hyper_8_24_chunk_campaign_agg_time_idx on _timescaledb_internal._hyper_8_24_chunk (cost=0.56..2.78 rows=1 width=12) (actual time=0.042..0.042 rows=0 loops=6)

  • Output: _hyper_8_24_chunk.blast_id, _hyper_8_24_chunk.time
  • Index Cond: ((_hyper_8_24_chunk.time >= ('2018-11-17 08:00:00+00'::timestamp with time zone - '1 day'::interval)) AND (_hyper_8_24_chunk.time < '2018-11-24 08:00:00+00'::timestamp with time zone))
  • Filter: ((_hyper_8_24_chunk.send_count > 0) AND (_hyper_8_24_chunk.client_id = 1070))
  • Buffers: shared hit=5
  • Worker 0: actual time=0.042..0.042 rows=0 loops=1
  • Worker 1: actual time=0.040..0.040 rows=0 loops=1
  • Worker 2: actual time=0.046..0.046 rows=0 loops=1
  • Buffers: shared hit=1
  • Worker 3: actual time=0.041..0.041 rows=0 loops=1
  • Worker 4: actual time=0.042..0.042 rows=0 loops=1
33. 0.198 0.198 ↓ 0.0 0 6

Parallel Index Scan using _hyper_8_1297_chunk_campaign_agg_time_idx on _timescaledb_internal._hyper_8_1297_chunk (cost=0.44..2.66 rows=1 width=12) (actual time=0.033..0.033 rows=0 loops=6)

  • Output: _hyper_8_1297_chunk.blast_id, _hyper_8_1297_chunk.time
  • Index Cond: ((_hyper_8_1297_chunk.time >= ('2018-11-17 08:00:00+00'::timestamp with time zone - '1 day'::interval)) AND (_hyper_8_1297_chunk.time < '2018-11-24 08:00:00+00'::timestamp with time zone))
  • Filter: ((_hyper_8_1297_chunk.send_count > 0) AND (_hyper_8_1297_chunk.client_id = 1070))
  • Buffers: shared hit=4
  • Worker 0: actual time=0.033..0.033 rows=0 loops=1
  • Worker 1: actual time=0.040..0.040 rows=0 loops=1
  • Worker 2: actual time=0.033..0.033 rows=0 loops=1
  • Buffers: shared hit=1
  • Worker 3: actual time=0.030..0.030 rows=0 loops=1
  • Worker 4: actual time=0.025..0.025 rows=0 loops=1
34. 0.252 0.252 ↓ 0.0 0 6

Parallel Index Scan using _hyper_8_1295_chunk_campaign_agg_time_idx on _timescaledb_internal._hyper_8_1295_chunk (cost=0.44..2.66 rows=1 width=12) (actual time=0.042..0.042 rows=0 loops=6)

  • Output: _hyper_8_1295_chunk.blast_id, _hyper_8_1295_chunk.time
  • Index Cond: ((_hyper_8_1295_chunk.time >= ('2018-11-17 08:00:00+00'::timestamp with time zone - '1 day'::interval)) AND (_hyper_8_1295_chunk.time < '2018-11-24 08:00:00+00'::timestamp with time zone))
  • Filter: ((_hyper_8_1295_chunk.send_count > 0) AND (_hyper_8_1295_chunk.client_id = 1070))
  • Buffers: shared hit=5
  • Worker 0: actual time=0.035..0.035 rows=0 loops=1
  • Worker 1: actual time=0.037..0.037 rows=0 loops=1
  • Buffers: shared hit=1
  • Worker 2: actual time=0.033..0.033 rows=0 loops=1
  • Worker 3: actual time=0.038..0.038 rows=0 loops=1
  • Worker 4: actual time=0.054..0.054 rows=0 loops=1
  • Buffers: shared hit=4
35. 113.436 1,332.873 ↓ 6.0 42 28,359

Append (cost=0.00..104.76 rows=7 width=36) (actual time=0.004..0.047 rows=42 loops=28,359)

  • Buffers: shared hit=1332900
36. 0.000 0.000 ↓ 0.0 0 28,359

Seq Scan on public.campaign_agg (cost=0.00..0.00 rows=1 width=36) (actual time=0.000..0.000 rows=0 loops=28,359)

  • Output: campaign_agg.send_count, campaign_agg.open_count, campaign_agg.click_count, campaign_agg.blast_id, campaign_agg.time
  • Filter: ((campaign_agg.time >= '2018-11-17 08:00:00+00'::timestamp with time zone) AND (campaign_agg.time < '2018-12-08 08:00:00+00'::timestamp with time zone) AND (campaign_agg.client_id = 1070) AND (campaign_agg_1.blast_id = campaign_agg.blast_id) AND ((campaign_agg.time - (min(campaign_agg_1.time))) < '14 days'::interval))
37. 1,219.437 1,219.437 ↓ 7.0 42 28,359

Index Scan using 1304_1304_campaign_agg_pkey on _timescaledb_internal._hyper_8_1304_chunk (cost=0.56..104.76 rows=6 width=36) (actual time=0.004..0.043 rows=42 loops=28,359)

  • Output: _hyper_8_1304_chunk.send_count, _hyper_8_1304_chunk.open_count, _hyper_8_1304_chunk.click_count, _hyper_8_1304_chunk.blast_id, _hyper_8_1304_chunk.time
  • Index Cond: ((campaign_agg_1.blast_id = _hyper_8_1304_chunk.blast_id) AND (_hyper_8_1304_chunk.time >= '2018-11-17 08:00:00+00'::timestamp with time zone) AND (_hyper_8_1304_chunk.time < '2018-12-08 08:00:00+00'::timestamp with time zone))
  • Filter: ((_hyper_8_1304_chunk.client_id = 1070) AND ((_hyper_8_1304_chunk.time - (min(campaign_agg_1.time))) < '14 days'::interval))
  • Rows Removed by Filter: 1
  • Buffers: shared hit=1332900