explain.depesz.com

PostgreSQL's explain analyze made readable

Result: LuOr

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

Aggregate (cost=86,948.77..86,948.78 rows=1 width=8) (actual rows= loops=)

2.          

Initplan (for Aggregate)

3. 0.000 0.000 ↓ 0.0

Index Scan using property_pkey on property (cost=0.27..2.29 rows=1 width=8) (actual rows= loops=)

  • Index Cond: ((propertycode)::text = 'defaultCountryCode'::text)
4. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=43,229.97..86,885.49 rows=24,397 width=0) (actual rows= loops=)

  • Hash Cond: (deliverypoint.deliverypointid = dp.deliverypointid)
5. 0.000 0.000 ↓ 0.0

Hash Join (cost=2,279.24..45,599.30 rows=24,397 width=4) (actual rows= loops=)

  • Hash Cond: ((SubPlan 2) = generalconfig.generalconfigid)
6. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=1,479.84..41,193.14 rows=24,681 width=8) (actual rows= loops=)

  • Hash Cond: (deliveryperiod.deliveryperiodid = cdp.deliveryperiodid)
7. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=1,096.76..40,303.92 rows=20,746 width=8) (actual rows= loops=)

  • Hash Cond: ((deliverypointcomponent.deliverypointcomponentid = deliveryperiod.deliverypointcomponentid) AND (consumption.deliveryperiodid = deliveryperiod.deliveryperiodid))
8. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=728.46..39,780.01 rows=20,746 width=12) (actual rows= loops=)

  • Hash Cond: (consumption.deliverypointid = deliverypoint.deliverypointid)
9. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=382.34..39,148.64 rows=20,746 width=12) (actual rows= loops=)

  • Hash Cond: (processmessages.processid = process.processid)
10. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=353.26..38,834.29 rows=20,746 width=16) (actual rows= loops=)

  • Hash Cond: ((deliverypointcomponent.componentnature)::text = (componentnature.componentnature)::text)
11. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=349.51..38,545.29 rows=20,746 width=24) (actual rows= loops=)

  • Hash Cond: (consumption.deliverypointcomponentid = deliverypointcomponent.deliverypointcomponentid)
12. 0.000 0.000 ↓ 0.0

Hash Join (cost=44.40..37,954.92 rows=20,746 width=16) (actual rows= loops=)

  • Hash Cond: ((consumptiondetail.measurementnature)::text = (measurementnature.nature)::text)
13. 0.000 0.000 ↓ 0.0

Nested Loop (cost=42.75..37,668.01 rows=20,746 width=33) (actual rows= loops=)

14. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=42.33..5,279.17 rows=9,358 width=20) (actual rows= loops=)

  • Hash Cond: (consumption.messageid = processmessages.messageid)
15. 0.000 0.000 ↓ 0.0

Seq Scan on consumption (cost=0.00..5,188.76 rows=9,358 width=35) (actual rows= loops=)

  • Filter: ((deleted IS FALSE) AND ((measurementfrequency)::text <> ALL ('{HOURLY,QUARTER_HOURLY}'::text[])) AND ((todate IS NULL) OR (todate > '2019-01-01'::date)) AND (fromdate <= '2019-07-15'::date) AND ((status)::text = 'ACTUAL'::text))
16. 0.000 0.000 ↓ 0.0

Hash (cost=22.70..22.70 rows=1,570 width=8) (actual rows= loops=)

17. 0.000 0.000 ↓ 0.0

Seq Scan on processmessages (cost=0.00..22.70 rows=1,570 width=8) (actual rows= loops=)

18. 0.000 0.000 ↓ 0.0

Index Scan using "IX_consumptiondetail_consumptionid_consumptiondetail" on consumptiondetail (cost=0.42..3.43 rows=3 width=25) (actual rows= loops=)

  • Index Cond: (consumptionid = consumption.consumptionid)
  • Filter: ((ignored IS FALSE) AND ((measurementnature)::text <> ALL ('{REACTIVE_CAPACITIVE_ENERGY,REACTIVE_CAPACITIVE_POWER,REACTIVE_INDUCTIVE_ENERGY,REACTIVE_INDUCTIVE_POWER}'::text[])))
19. 0.000 0.000 ↓ 0.0

Hash (cost=1.29..1.29 rows=29 width=32) (actual rows= loops=)

20. 0.000 0.000 ↓ 0.0

Seq Scan on measurementnature (cost=0.00..1.29 rows=29 width=32) (actual rows= loops=)

21. 0.000 0.000 ↓ 0.0

Hash (cost=198.94..198.94 rows=8,494 width=12) (actual rows= loops=)

22. 0.000 0.000 ↓ 0.0

Seq Scan on deliverypointcomponent (cost=0.00..198.94 rows=8,494 width=12) (actual rows= loops=)

  • Filter: (deleted IS FALSE)
23. 0.000 0.000 ↓ 0.0

Hash (cost=3.60..3.60 rows=11 width=32) (actual rows= loops=)

24. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=2.44..3.60 rows=11 width=32) (actual rows= loops=)

  • Hash Cond: ((componentnature.componentnature)::text = (codetranslation.code)::text)
25. 0.000 0.000 ↓ 0.0

Seq Scan on componentnature (cost=0.00..1.11 rows=11 width=32) (actual rows= loops=)

26. 0.000 0.000 ↓ 0.0

Hash (cost=2.43..2.43 rows=1 width=12) (actual rows= loops=)

27. 0.000 0.000 ↓ 0.0

Index Only Scan using codetranslation_category_code_countrycode_idx on codetranslation (cost=0.28..2.43 rows=1 width=12) (actual rows= loops=)

  • Index Cond: ((category = 'componentnature'::text) AND (countrycode IS NULL))
28. 0.000 0.000 ↓ 0.0

Hash (cost=26.10..26.10 rows=239 width=4) (actual rows= loops=)

29. 0.000 0.000 ↓ 0.0

Hash Right Join (cost=9.65..26.10 rows=239 width=4) (actual rows= loops=)

  • Hash Cond: (transactioncrossref.processid = process.processid)
30. 0.000 0.000 ↓ 0.0

Index Scan using transactioncrossref_counterpart_idx on transactioncrossref (cost=0.27..13.61 rows=226 width=4) (actual rows= loops=)

  • Index Cond: ((counterpart)::text = 'BackOffice'::text)
  • Filter: ((type)::text = 'STANDARD'::text)
31. 0.000 0.000 ↓ 0.0

Hash (cost=6.39..6.39 rows=239 width=4) (actual rows= loops=)

32. 0.000 0.000 ↓ 0.0

Seq Scan on process (cost=0.00..6.39 rows=239 width=4) (actual rows= loops=)

33. 0.000 0.000 ↓ 0.0

Hash (cost=239.94..239.94 rows=8,494 width=4) (actual rows= loops=)

34. 0.000 0.000 ↓ 0.0

Seq Scan on deliverypoint (cost=0.00..239.94 rows=8,494 width=4) (actual rows= loops=)

  • Filter: (deleted IS FALSE)
35. 0.000 0.000 ↓ 0.0

Hash (cost=234.32..234.32 rows=8,932 width=8) (actual rows= loops=)

36. 0.000 0.000 ↓ 0.0

Seq Scan on deliveryperiod (cost=0.00..234.32 rows=8,932 width=8) (actual rows= loops=)

  • Filter: (deleted IS FALSE)
37. 0.000 0.000 ↓ 0.0

Hash (cost=250.26..250.26 rows=10,626 width=12) (actual rows= loops=)

38. 0.000 0.000 ↓ 0.0

Seq Scan on contractdelivery cdp (cost=0.00..250.26 rows=10,626 width=12) (actual rows= loops=)

39. 0.000 0.000 ↓ 0.0

Hash (cost=588.92..588.92 rows=16,838 width=4) (actual rows= loops=)

40. 0.000 0.000 ↓ 0.0

Seq Scan on generalconfig (cost=0.00..588.92 rows=16,838 width=4) (actual rows= loops=)

  • Filter: ((deleted IS FALSE) AND ((direction)::text = 'CONSUMPTION'::text))
41.          

SubPlan (for Hash Join)

42. 0.000 0.000 ↓ 0.0

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

43. 0.000 0.000 ↓ 0.0

Hash (cost=40,844.55..40,844.55 rows=8,494 width=8) (actual rows= loops=)

44. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=1,146.58..40,844.55 rows=8,494 width=8) (actual rows= loops=)

  • Hash Cond: (((deliveryperiodbrpjournal.brp)::text = (actor_brp.externalid)::text) AND ((dp.market)::text = (actor_brp.marketcode)::text))
45. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=1,143.59..40,709.98 rows=8,494 width=22) (actual rows= loops=)

  • Hash Cond: (((deliveryperiod_1.supplier)::text = (actor_sup.externalid)::text) AND ((dp.market)::text = (actor_sup.marketcode)::text))
46. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=1,140.66..40,620.73 rows=8,494 width=33) (actual rows= loops=)

  • Hash Cond: ((SubPlan 7) = deliveryperiodbrpjournal.deliveryperiodbrpjournalid)
47. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=352.71..20,052.38 rows=8,494 width=22) (actual rows= loops=)

  • Hash Cond: ((SubPlan 6) = deliveryperiod_1.deliveryperiodid)
48. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=6.74..9,747.19 rows=8,494 width=7) (actual rows= loops=)

  • Hash Cond: (((dp.market)::text = (actor_dgo.marketcode)::text) AND ((dp.gridoperator)::text = (actor_dgo.externalid)::text))
  • Join Filter: ((dp.regulator)::text = ((SubPlan 5))::text)
49. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=2.94..299.51 rows=8,494 width=21) (actual rows= loops=)

  • Hash Cond: ((dp.regulator)::text = (actor_reg.externalid)::text)
50. 0.000 0.000 ↓ 0.0

Seq Scan on deliverypoint dp (cost=0.00..239.94 rows=8,494 width=21) (actual rows= loops=)

  • Filter: (deleted IS FALSE)
51. 0.000 0.000 ↓ 0.0

Hash (cost=2.90..2.90 rows=3 width=13) (actual rows= loops=)

52. 0.000 0.000 ↓ 0.0

Seq Scan on actor actor_reg (cost=0.00..2.90 rows=3 width=13) (actual rows= loops=)

  • Filter: ((role)::text = 'RR'::text)
53. 0.000 0.000 ↓ 0.0

Hash (cost=2.90..2.90 rows=60 width=15) (actual rows= loops=)

54. 0.000 0.000 ↓ 0.0

Seq Scan on actor actor_dgo (cost=0.00..2.90 rows=60 width=15) (actual rows= loops=)

  • Filter: ((role)::text = ANY ('{D,T}'::text[]))
55.          

SubPlan (for Hash Left Join)

56. 0.000 0.000 ↓ 0.0

Seq Scan on gridoperator dgo (cost=0.00..1.73 rows=1 width=32) (actual rows= loops=)

  • Filter: (gridoperatorid = actor_dgo.actorid)
57. 0.000 0.000 ↓ 0.0

Hash (cost=234.32..234.32 rows=8,932 width=15) (actual rows= loops=)

58. 0.000 0.000 ↓ 0.0

Seq Scan on deliveryperiod deliveryperiod_1 (cost=0.00..234.32 rows=8,932 width=15) (actual rows= loops=)

  • Filter: (deleted IS FALSE)
59.          

SubPlan (for Hash Left Join)

60. 0.000 0.000 ↓ 0.0

Limit (cost=2.31..2.32 rows=1 width=8) (actual rows= loops=)

61. 0.000 0.000 ↓ 0.0

Sort (cost=2.31..2.32 rows=1 width=8) (actual rows= loops=)

  • Sort Key: deliveryperiod_3.todate DESC
62. 0.000 0.000 ↓ 0.0

Index Scan using "IX_deliveryperiod_deliverypointid_deliveryperiod" on deliveryperiod deliveryperiod_3 (cost=0.29..2.30 rows=1 width=8) (actual rows= loops=)

  • Index Cond: (deliverypointid = dp.deliverypointid)
  • Filter: (deleted IS FALSE)
63. 0.000 0.000 ↓ 0.0

Hash (cost=678.31..678.31 rows=8,772 width=19) (actual rows= loops=)

64. 0.000 0.000 ↓ 0.0

Hash Join (cost=345.97..678.31 rows=8,772 width=19) (actual rows= loops=)

  • Hash Cond: (deliveryperiodbrpjournal.deliveryperiodid = deliveryperiod_2.deliveryperiodid)
65. 0.000 0.000 ↓ 0.0

Seq Scan on deliveryperiodbrpjournal (cost=0.00..211.72 rows=8,772 width=23) (actual rows= loops=)

66. 0.000 0.000 ↓ 0.0

Hash (cost=234.32..234.32 rows=8,932 width=4) (actual rows= loops=)

67. 0.000 0.000 ↓ 0.0

Seq Scan on deliveryperiod deliveryperiod_2 (cost=0.00..234.32 rows=8,932 width=4) (actual rows= loops=)

  • Filter: (deleted IS FALSE)
68.          

SubPlan (for Hash Left Join)

69. 0.000 0.000 ↓ 0.0

Limit (cost=4.62..4.63 rows=1 width=8) (actual rows= loops=)

70. 0.000 0.000 ↓ 0.0

Sort (cost=4.62..4.63 rows=1 width=8) (actual rows= loops=)

  • Sort Key: deliveryperiodbrpjournal_1.todate DESC
71. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.57..4.61 rows=1 width=8) (actual rows= loops=)

72. 0.000 0.000 ↓ 0.0

Index Scan using "IX_deliveryperiodbrpjournal_delivetyperiodid_deliveryperiodbrpj" on deliveryperiodbrpjournal deliveryperiodbrpjournal_1 (cost=0.29..2.30 rows=1 width=12) (actual rows= loops=)

  • Index Cond: (deliveryperiodid = deliveryperiod_1.deliveryperiodid)
73. 0.000 0.000 ↓ 0.0

Index Scan using deliveryperiod_pkey on deliveryperiod deliveryperiod_4 (cost=0.29..2.30 rows=1 width=4) (actual rows= loops=)

  • Index Cond: (deliveryperiodid = deliveryperiod_1.deliveryperiodid)
  • Filter: (deleted IS FALSE)
74. 0.000 0.000 ↓ 0.0

Hash (cost=2.90..2.90 rows=2 width=11) (actual rows= loops=)

75. 0.000 0.000 ↓ 0.0

Seq Scan on actor actor_sup (cost=0.00..2.90 rows=2 width=11) (actual rows= loops=)

  • Filter: ((role)::text = 'S'::text)
76. 0.000 0.000 ↓ 0.0

Hash (cost=2.90..2.90 rows=6 width=15) (actual rows= loops=)

77. 0.000 0.000 ↓ 0.0

Seq Scan on actor actor_brp (cost=0.00..2.90 rows=6 width=15) (actual rows= loops=)

  • Filter: ((role)::text = 'B'::text)