explain.depesz.com

PostgreSQL's explain analyze made readable

Result: 2JfF

Settings
# exclusive inclusive rows x rows loops node
1. 0.040 6,746.580 ↑ 1.1 85 1

Sort (cost=1,981,437.24..1,981,437.48 rows=97 width=37) (actual time=6,746.573..6,746.580 rows=85 loops=1)

  • Sort Key: (max(signal."timestamp"))
  • Sort Method: quicksort Memory: 31kB
2. 2,260.615 6,746.540 ↑ 1.1 85 1

HashAggregate (cost=1,981,433.06..1,981,434.03 rows=97 width=37) (actual time=6,746.526..6,746.540 rows=85 loops=1)

  • Group Key: source.name, source.serial
3. 1,943.799 4,485.925 ↓ 1.3 8,416,819 1

Hash Join (cost=154,870.31..1,932,236.40 rows=6,559,555 width=37) (actual time=1,467.146..4,485.925 rows=8,416,819 loops=1)

  • Hash Cond: (signal.source_id = source.source_id)
4. 1,096.042 2,542.047 ↓ 1.3 8,416,819 1

Bitmap Heap Scan on signal (cost=154,865.13..1,842,037.34 rows=6,559,555 width=12) (actual time=1,467.047..2,542.047 rows=8,416,819 loops=1)

  • Recheck Cond: ("timestamp" > (now() - '1 mon'::interval))
  • Heap Blocks: exact=90141
5. 1,446.005 1,446.005 ↓ 1.3 8,505,563 1

Bitmap Index Scan on ix_signal_timestamp (cost=0.00..153,225.24 rows=6,559,555 width=0) (actual time=1,446.005..1,446.005 rows=8,505,563 loops=1)

  • Index Cond: ("timestamp" > (now() - '1 mon'::interval))
6. 0.018 0.079 ↑ 1.0 97 1

Hash (cost=3.97..3.97 rows=97 width=33) (actual time=0.079..0.079 rows=97 loops=1)

  • Buckets: 1024 Batches: 1 Memory Usage: 15kB
7. 0.061 0.061 ↑ 1.0 97 1

Seq Scan on source (cost=0.00..3.97 rows=97 width=33) (actual time=0.018..0.061 rows=97 loops=1)