explain.depesz.com

PostgreSQL's explain analyze made readable

Result: 5scC

Settings
# exclusive inclusive rows x rows loops node
1. 0.000 0.000 ↓ 0.0

Nested Loop (cost=207.14..181,915,836,668.14 rows=154,674,305 width=121) (actual rows= loops=)

2. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=206.86..181,867,512,643.56 rows=154,636,173 width=84) (actual rows= loops=)

  • Join Filter: (split_data.splitdate < small_table_A.factor_A_date)
3. 0.000 0.000 ↓ 0.0

Nested Loop (cost=206.58..181,819,575,411.48 rows=154,636,173 width=78) (actual rows= loops=)

4. 0.000 0.000 ↓ 0.0

Index Scan using calls_calldatadate_idx on calls (cost=0.57..6,283,903.98 rows=193,651,600 width=68) (actual rows= loops=)

5. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on small_table_A (cost=206.01..938.86 rows=1 width=14) (actual rows= loops=)

  • Recheck Cond: (((symbol)::text = (calls.callunderlyingsymbol)::text) AND (factor_A_date > calls.calldatadate) AND (calls.callexpiration > factor_A_date))
  • Filter: (((status)::text = 'Verified'::text) AND ((SubPlan 1) < 30))
6. 0.000 0.000 ↓ 0.0

BitmapAnd (cost=206.01..206.01 rows=3 width=0) (actual rows= loops=)

7. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on small_table_A_symbol_idx (cost=0.00..0.59 rows=23 width=0) (actual rows= loops=)

  • Index Cond: ((symbol)::text = (calls.callunderlyingsymbol)::text)
8. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on small_table_A_factor_A_date_idx (cost=0.00..205.17 rows=20,475 width=0) (actual rows= loops=)

  • Index Cond: ((factor_A_date > calls.calldatadate) AND (calls.callexpiration > factor_A_date))
9.          

SubPlan (forBitmap Heap Scan)

10. 0.000 0.000 ↓ 0.0

Aggregate (cost=243.88..243.89 rows=1 width=8) (actual rows= loops=)

11. 0.000 0.000 ↓ 0.0

Seq Scan on calendar (cost=0.00..243.72 rows=63 width=0) (actual rows= loops=)

  • Filter: ((calls.calldatadate < validdate) AND (validdate <= small_table_A.factor_A_date))
12. 0.000 0.000 ↓ 0.0

Index Scan using split_data_symbol_idx on split_data (cost=0.28..0.30 rows=1 width=14) (actual rows= loops=)

  • Index Cond: ((calls.callunderlyingsymbol)::text = (symbol)::text)
  • Filter: (calls.calldatadate < splitdate)
13. 0.000 0.000 ↓ 0.0

Index Scan using small_table_B_data_date_idx on small_table_B_data (cost=0.28..0.30 rows=1 width=9) (actual rows= loops=)

  • Index Cond: (date = calls.calldatadate)