explain.depesz.com

PostgreSQL's explain analyze made readable

Result: 1odr

Settings
# exclusive inclusive rows x rows loops node
1. 275.671 86,248.252 ↑ 6.7 30 1

GroupAggregate (cost=55,143,064.49..55,153,012.59 rows=200 width=16) (actual time=85,931.230..86,248.252 rows=30 loops=1)

  • Group Key: (generate_series(date_trunc('day'::text, date_trunc('day'::text, (now() - '29 days'::interval))), now(), ('1 day'::cstring)::interval))
2. 237.611 85,972.581 ↑ 6.3 212,134 1

Sort (cost=55,143,064.49..55,146,379.85 rows=1,326,147 width=45) (actual time=85,915.162..85,972.581 rows=212,134 loops=1)

  • Sort Key: (generate_series(date_trunc('day'::text, date_trunc('day'::text, (now() - '29 days'::interval))), now(), ('1 day'::cstring)::interval))
  • Sort Method: external sort Disk: 11416kB
3. 71,953.857 85,734.970 ↑ 6.3 212,134 1

Nested Loop Left Join (cost=0.43..54,926,611.23 rows=1,326,147 width=45) (actual time=4,417.332..85,734.970 rows=212,134 loops=1)

  • Join Filter: (tsrange(timezone('America/Los_Angeles'::text, (generate_series(date_trunc('day'::text, date_trunc('day'::text, (now() - '29 days'::interval))), now(), ('1 day'::cstring)::interval))), (timezone('America/Los_Angeles'::text, (generate_series(date_trunc('day'::text, date_trunc('day'::text, (now() - '29 days'::interval))), now(), ('1 day'::cstring)::interval))) + ('1 day'::cstring)::interval)) @> timezone('America/Los_Angeles'::text, pages."timestamp"))
  • Rows Removed by Join Filter: 40418757
4. 0.103 0.103 ↑ 33.3 30 1

Result (cost=0.00..5.03 rows=1,000 width=8) (actual time=0.012..0.103 rows=30 loops=1)

5. 11,782.861 13,781.010 ↓ 1.0 1,354,363 30

Materialize (cost=0.43..185,790.07 rows=1,326,147 width=45) (actual time=0.006..459.367 rows=1,354,363 loops=30)

6. 1,998.149 1,998.149 ↓ 1.0 1,354,363 1

Index Scan using idx_javascript_pages_timestamp_conversion on pages (cost=0.43..167,503.34 rows=1,326,147 width=45) (actual time=0.064..1,998.149 rows=1,354,363 loops=1)