explain.depesz.com

PostgreSQL's explain analyze made readable

Result: wsMh

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

Gather Motion 60:1 (slice8; segments: 60) (cost=0.00..2,731,471.83 rows=609 width=13) (actual rows= loops=)

2. 0.000 0.000 ↓ 0.0

Sequence (cost=0.00..2,731,471.81 rows=11 width=13) (actual rows= loops=)

3. 0.000 0.000 ↓ 0.0

Shared Scan (share slice:id 8:0) (cost=0.00..0.00 rows=1 width=1) (actual rows= loops=)

4. 0.000 0.000 ↓ 0.0

Materialize (cost=0.00..0.00 rows=1 width=1) (actual rows= loops=)

5. 0.000 0.000 ↓ 0.0

Result (cost=0.00..0.00 rows=1 width=16) (actual rows= loops=)

6. 0.000 0.000 ↓ 0.0

Result (cost=0.00..0.00 rows=1 width=1) (actual rows= loops=)

  • One-Time Filter: (gp_execution_segment() = 30)
7. 0.000 0.000 ↓ 0.0

Result (cost=0.00..0.00 rows=1 width=1) (actual rows= loops=)

8. 0.000 0.000 ↓ 0.0

Result (cost=0.00..0.00 rows=1 width=1) (actual rows= loops=)

9. 0.000 0.000 ↓ 0.0

HashAggregate (cost=0.00..2,731,471.81 rows=11 width=13) (actual rows= loops=)

  • Group Key: market_data_set_d2.md_set_cd
10. 0.000 0.000 ↓ 0.0

Redistribute Motion 60:60 (slice7; segments: 60) (cost=0.00..2,731,471.81 rows=11 width=13) (actual rows= loops=)

  • Hash Key: market_data_set_d2.md_set_cd
11. 0.000 0.000 ↓ 0.0

HashAggregate (cost=0.00..2,731,471.81 rows=11 width=13) (actual rows= loops=)

  • Group Key: market_data_set_d2.md_set_cd
12. 0.000 0.000 ↓ 0.0

Hash Join (cost=0.00..2,731,448.05 rows=189,914 width=13) (actual rows= loops=)

  • Hash Cond: (md_value_f.md_point_id = md_point_d2.md_point_id)
  • Join Filter: ((md_value_f.valid_from_dt <= timestamp_in(unknownout(share0_ref2.valid_dt), 1114::oid, (-1))) AND (timestamp_in(unknownout(share0_ref2.valid_dt), 1114::oid, (-1)) < md_value_f.valid_to_dt) AND (timestamp_in(unknownout(share0_ref2.audit_ts), 1114::oid, (-1)) < md_value_f.audit_to_ts) AND (timestamp_in(unknownout(share0_ref2.audit_ts), 1114::oid, (-1)) >= md_value_f.audit_from_ts))
13. 0.000 0.000 ↓ 0.0

Hash Join (cost=0.00..1,353,707.69 rows=62,767,350 width=40) (actual rows= loops=)

  • Hash Cond: (md_value_f.dataset_id = (max(jobspec_d2.md_dataset_id)))
14. 0.000 0.000 ↓ 0.0

Dynamic Seq Scan on md_value_f (dynamic scan id: 1) (cost=0.00..3,468.94 rows=62,767,350 width=42) (actual rows= loops=)

15. 0.000 0.000 ↓ 0.0

Hash (cost=1,324,033.51..1,324,033.51 rows=1 width=2) (actual rows= loops=)

16. 0.000 0.000 ↓ 0.0

Broadcast Motion 1:60 (slice3) (cost=0.00..1,324,033.51 rows=60 width=2) (actual rows= loops=)

17. 0.000 0.000 ↓ 0.0

Aggregate (cost=0.00..1,324,033.51 rows=1 width=2) (actual rows= loops=)

18. 0.000 0.000 ↓ 0.0

Gather Motion 60:1 (slice2; segments: 60) (cost=0.00..1,324,033.51 rows=1 width=2) (actual rows= loops=)

19. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.00..1,324,033.51 rows=1 width=2) (actual rows= loops=)

  • Join Filter: ((jobspec_d2.valid_from_dt <= timestamp_in(unknownout(share0_ref3.valid_dt), 1114::oid, (-1))) AND (timestamp_in(unknownout(share0_ref3.valid_dt), 1114::oid, (-1)) < jobspec_d2.valid_to_dt) AND (timestamp_in(unknownout(share0_ref3.audit_ts), 1114::oid, (-1)) < jobspec_d2.audit_to_ts) AND (timestamp_in(unknownout(share0_ref3.audit_ts), 1114::oid, (-1)) >= jobspec_d2.audit_from_ts))
20. 0.000 0.000 ↓ 0.0

Seq Scan on jobspec_d2 (cost=0.00..431.00 rows=1 width=34) (actual rows= loops=)

  • Filter: ((jobspec_nm)::text = 'EquityHistoBetaVolCalc'::text)
21. 0.000 0.000 ↓ 0.0

Materialize (cost=0.00..431.00 rows=1 width=16) (actual rows= loops=)

22. 0.000 0.000 ↓ 0.0

Broadcast Motion 60:60 (slice1; segments: 60) (cost=0.00..431.00 rows=1 width=16) (actual rows= loops=)

23. 0.000 0.000 ↓ 0.0

Shared Scan (share slice:id 1:0) (cost=0.00..431.00 rows=1 width=16) (actual rows= loops=)

24. 0.000 0.000 ↓ 0.0

Hash (cost=100.00..100.00 rows=2 width=4) (actual rows= loops=)

25. 0.000 0.000 ↓ 0.0

Partition Selector for md_value_f (dynamic scan id: 1) (cost=10.00..100.00 rows=2 width=4) (actual rows= loops=)

26. 0.000 0.000 ↓ 0.0

Redistribute Motion 60:60 (slice6; segments: 60) (cost=0.00..1,332,558.92 rows=6,199 width=37) (actual rows= loops=)

  • Hash Key: md_point_d2.md_point_id
27. 0.000 0.000 ↓ 0.0

Hash Join (cost=0.00..1,332,558.20 rows=6,199 width=37) (actual rows= loops=)

  • Hash Cond: (md_point_d2.md_set_id = market_data_set_d2.md_set_id)
  • Join Filter: ((md_point_d2.valid_from_dt <= timestamp_in(unknownout(share0_ref2.valid_dt), 1114::oid, (-1))) AND (timestamp_in(unknownout(share0_ref2.valid_dt), 1114::oid, (-1)) < md_point_d2.valid_to_dt) AND (timestamp_in(unknownout(share0_ref2.audit_ts), 1114::oid, (-1)) < md_point_d2.audit_to_ts) AND (timestamp_in(unknownout(share0_ref2.audit_ts), 1114::oid, (-1)) >= md_point_d2.audit_from_ts))
28. 0.000 0.000 ↓ 0.0

Seq Scan on md_point_d2 (cost=0.00..481.52 rows=596,457 width=44) (actual rows= loops=)

29. 0.000 0.000 ↓ 0.0

Hash (cost=1,331,595.73..1,331,595.73 rows=609 width=33) (actual rows= loops=)

30. 0.000 0.000 ↓ 0.0

Broadcast Motion 60:60 (slice5; segments: 60) (cost=0.00..1,331,595.73 rows=609 width=33) (actual rows= loops=)

31. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.00..1,331,595.69 rows=11 width=33) (actual rows= loops=)

  • Join Filter: ((market_data_set_d2.valid_from_dt <= timestamp_in(unknownout(share0_ref2.valid_dt), 1114::oid, (-1))) AND (timestamp_in(unknownout(share0_ref2.valid_dt), 1114::oid, (-1)) < market_data_set_d2.valid_to_dt) AND (timestamp_in(unknownout(share0_ref2.audit_ts), 1114::oid, (-1)) < market_data_set_d2.audit_to_ts) AND (timestamp_in(unknownout(share0_ref2.audit_ts), 1114::oid, (-1)) >= market_data_set_d2.audit_from_ts))
32. 0.000 0.000 ↓ 0.0

Broadcast Motion 60:60 (slice4; segments: 60) (cost=0.00..431.00 rows=1 width=16) (actual rows= loops=)

33. 0.000 0.000 ↓ 0.0

Shared Scan (share slice:id 4:0) (cost=0.00..431.00 rows=1 width=16) (actual rows= loops=)

34. 0.000 0.000 ↓ 0.0

Seq Scan on market_data_set_d2 (cost=0.00..438.38 rows=38 width=49) (actual rows= loops=)

  • Filter: (((md_type)::text = 'VOL'::text) AND ((md_sub_type)::text = 'MKT'::text) AND ((query_type)::text = 'Equity.EquityVolQuery'::text))