explain.depesz.com

PostgreSQL's explain analyze made readable

Result: WaqKU

Settings
# exclusive inclusive rows x rows loops node
1. 0.001 0.142 ↓ 0.0 0 1

Hash Join (cost=395.62..407.98 rows=30 width=2,323) (actual time=0.142..0.142 rows=0 loops=1)

2. 0.000 0.141 ↓ 0.0 0 1

Hash Join (cost=341.48..353.75 rows=30 width=3,073) (actual time=0.141..0.141 rows=0 loops=1)

3. 0.001 0.141 ↓ 0.0 0 1

Hash Join (cost=318.94..331.12 rows=30 width=3,065) (actual time=0.14..0.141 rows=0 loops=1)

4. 0.044 0.140 ↓ 0.0 0 1

Hash Join (cost=296.4..308.48 rows=30 width=3,057) (actual time=0.14..0.14 rows=0 loops=1)

5. 0.000 0.000 ↓ 0.0 0 0

Seq Scan on venue_humanized_id venue_humanized_id (cost=0..11.3 rows=130 width=524) (never executed)

6. 0.001 0.096 ↓ 0.0 0 1

Hash (cost=296.02..296.02 rows=30 width=2,541) (actual time=0.096..0.096 rows=0 loops=1)

7. 0.000 0.095 ↓ 0.0 0 1

Hash Join (cost=280.79..296.02 rows=30 width=2,541) (actual time=0.095..0.095 rows=0 loops=1)

8. 0.001 0.095 ↓ 0.0 0 1

Hash Join (cost=225.75..240.89 rows=30 width=2,509) (actual time=0.095..0.095 rows=0 loops=1)

9. 0.000 0.094 ↓ 0.0 0 1

Hash Join (cost=203.21..218.25 rows=30 width=2,501) (actual time=0.094..0.094 rows=0 loops=1)

10. 0.001 0.094 ↓ 0.0 0 1

Hash Join (cost=148.51..163.47 rows=30 width=2,493) (actual time=0.093..0.094 rows=0 loops=1)

11. 0.001 0.093 ↓ 0.0 0 1

Hash Join (cost=93.82..108.69 rows=30 width=2,485) (actual time=0.093..0.093 rows=0 loops=1)

12. 0.000 0.092 ↓ 0.0 0 1

Hash Join (cost=37.1..51.88 rows=30 width=2,477) (actual time=0.092..0.092 rows=0 loops=1)

13. 0.037 0.092 ↓ 0.0 0 1

Hash Join (cost=25.75..40.45 rows=30 width=2,179) (actual time=0.092..0.092 rows=0 loops=1)

14. 0.000 0.000 ↓ 0.0 0 0

Seq Scan on venue_label venue_label (cost=0..13.2 rows=320 width=222) (never executed)

15. 0.000 0.055 ↓ 0.0 0 1

Hash (cost=25.38..25.38 rows=30 width=1,965) (actual time=0.054..0.055 rows=0 loops=1)

16. 0.043 0.055 ↓ 0.0 0 1

Hash Join (cost=10.68..25.38 rows=30 width=1,965) (actual time=0.054..0.055 rows=0 loops=1)

17. 0.000 0.000 ↓ 0.0 0 0

Seq Scan on venue_type venue_type (cost=0..13.2 rows=320 width=222) (never executed)

18. 0.001 0.012 ↓ 0.0 0 1

Hash (cost=10.3..10.3 rows=30 width=1,751) (actual time=0.012..0.012 rows=0 loops=1)

19. 0.011 0.011 ↓ 0.0 0 1

Seq Scan on venue venue (cost=0..10.3 rows=30 width=1,751) (actual time=0.011..0.011 rows=0 loops=1)

20. 0.000 0.000 ↓ 0.0 0 0

Hash (cost=10.6..10.6 rows=60 width=306) (never executed)

21. 0.000 0.000 ↓ 0.0 0 0

Seq Scan on offerer offerer (cost=0..10.6 rows=60 width=306) (never executed)

22. 0.000 0.000 ↓ 0.0 0 0

Hash (cost=56.34..56.34 rows=30 width=16) (never executed)

23. 0.000 0.000 ↓ 0.0 0 0

Subquery Scan on total_bookings_per_venue (cost=55.74..56.34 rows=30 width=16) (never executed)

24. 0.000 0.000 ↓ 0.0 0 0

Aggregate (cost=55.74..56.04 rows=30 width=16) (never executed)

25. 0.000 0.000 ↓ 0.0 0 0

Nested Loop (cost=21.89..55.19 rows=111 width=16) (never executed)

26. 0.000 0.000 ↓ 0.0 0 0

Hash Join (cost=21.74..35.17 rows=48 width=16) (never executed)

27. 0.000 0.000 ↓ 0.0 0 0

Hash Join (cost=11.06..24.36 rows=48 width=16) (never executed)

28. 0.000 0.000 ↓ 0.0 0 0

Seq Scan on stock stock (cost=0..12.6 rows=260 width=16) (never executed)

29. 0.000 0.000 ↓ 0.0 0 0

Hash (cost=10.6..10.6 rows=37 width=16) (never executed)

30. 0.000 0.000 ↓ 0.0 0 0

Seq Scan on offer offer (cost=0..10.6 rows=37 width=16) (never executed)

  • Filter: ((((offer."bookingEmail")::text <> 'jeux-concours@passculture.app'::text) OR (offer."bookingEmail" IS NULL)) AND ((offer.type)::text <> ALL ('{EventType.ACTIVATION,ThingType.ACTIVATION}'::text[])))
31. 0.000 0.000 ↓ 0.0 0 0

Hash (cost=10.3..10.3 rows=30 width=8) (never executed)

32. 0.000 0.000 ↓ 0.0 0 0

Seq Scan on venue venue_1 (cost=0..10.3 rows=30 width=8) (never executed)

33. 0.000 0.000 ↓ 0.0 0 0

Index Scan using "ix_booking_stockId" on booking booking (cost=0.15..0.39 rows=3 width=16) (never executed)

  • Index Cond: (stock.id = booking."stockId")
34. 0.000 0.000 ↓ 0.0 0 0

Hash (cost=54.32..54.32 rows=30 width=16) (never executed)

35. 0.000 0.000 ↓ 0.0 0 0

Subquery Scan on non_cancelled_bookings_per_venue (cost=53.72..54.32 rows=30 width=16) (never executed)

36. 0.000 0.000 ↓ 0.0 0 0

Aggregate (cost=53.72..54.02 rows=30 width=16) (never executed)

37. 0.000 0.000 ↓ 0.0 0 0

Hash Join (cost=35.77..53.44 rows=55 width=16) (never executed)

38. 0.000 0.000 ↓ 0.0 0 0

Seq Scan on booking booking_1 (cost=0..16 rows=300 width=16) (never executed)

  • Filter: (NOT booking_1."isCancelled")
39. 0.000 0.000 ↓ 0.0 0 0

Hash (cost=35.17..35.17 rows=48 width=16) (never executed)

40. 0.000 0.000 ↓ 0.0 0 0

Hash Join (cost=21.74..35.17 rows=48 width=16) (never executed)

41. 0.000 0.000 ↓ 0.0 0 0

Hash Join (cost=11.06..24.36 rows=48 width=16) (never executed)

42. 0.000 0.000 ↓ 0.0 0 0

Seq Scan on stock stock_1 (cost=0..12.6 rows=260 width=16) (never executed)

43. 0.000 0.000 ↓ 0.0 0 0

Hash (cost=10.6..10.6 rows=37 width=16) (never executed)

44. 0.000 0.000 ↓ 0.0 0 0

Seq Scan on offer offer_1 (cost=0..10.6 rows=37 width=16) (never executed)

  • Filter: ((((offer_1."bookingEmail")::text <> 'jeux-concours@passculture.app'::text) OR (offer_1."bookingEmail" IS NULL)) AND ((offer_1.type)::text <> ALL ('{EventType.ACTIVATION,ThingType.ACTIVATION}'::text[])))
45. 0.000 0.000 ↓ 0.0 0 0

Hash (cost=10.3..10.3 rows=30 width=8) (never executed)

46. 0.000 0.000 ↓ 0.0 0 0

Seq Scan on venue venue_2 (cost=0..10.3 rows=30 width=8) (never executed)

47. 0.000 0.000 ↓ 0.0 0 0

Hash (cost=54.32..54.32 rows=30 width=16) (never executed)

48. 0.000 0.000 ↓ 0.0 0 0

Subquery Scan on used_bookings_per_venue (cost=53.72..54.32 rows=30 width=16) (never executed)

49. 0.000 0.000 ↓ 0.0 0 0

Aggregate (cost=53.72..54.02 rows=30 width=16) (never executed)

50. 0.000 0.000 ↓ 0.0 0 0

Hash Join (cost=35.77..53.44 rows=55 width=16) (never executed)

51. 0.000 0.000 ↓ 0.0 0 0

Seq Scan on booking booking_2 (cost=0..16 rows=300 width=16) (never executed)

  • Filter: booking_2."isUsed"
52. 0.000 0.000 ↓ 0.0 0 0

Hash (cost=35.17..35.17 rows=48 width=16) (never executed)

53. 0.000 0.000 ↓ 0.0 0 0

Hash Join (cost=21.74..35.17 rows=48 width=16) (never executed)

54. 0.000 0.000 ↓ 0.0 0 0

Hash Join (cost=11.06..24.36 rows=48 width=16) (never executed)

55. 0.000 0.000 ↓ 0.0 0 0

Seq Scan on stock stock_2 (cost=0..12.6 rows=260 width=16) (never executed)

56. 0.000 0.000 ↓ 0.0 0 0

Hash (cost=10.6..10.6 rows=37 width=16) (never executed)

57. 0.000 0.000 ↓ 0.0 0 0

Seq Scan on offer offer_2 (cost=0..10.6 rows=37 width=16) (never executed)

  • Filter: ((((offer_2."bookingEmail")::text <> 'jeux-concours@passculture.app'::text) OR (offer_2."bookingEmail" IS NULL)) AND ((offer_2.type)::text <> ALL ('{EventType.ACTIVATION,ThingType.ACTIVATION}'::text[])))
58. 0.000 0.000 ↓ 0.0 0 0

Hash (cost=10.3..10.3 rows=30 width=8) (never executed)

59. 0.000 0.000 ↓ 0.0 0 0

Seq Scan on venue venue_3 (cost=0..10.3 rows=30 width=8) (never executed)

60. 0.000 0.000 ↓ 0.0 0 0

Hash (cost=22.17..22.17 rows=30 width=16) (never executed)

61. 0.000 0.000 ↓ 0.0 0 0

Subquery Scan on first_offer_creation_date (cost=21.57..22.17 rows=30 width=16) (never executed)

62. 0.000 0.000 ↓ 0.0 0 0

Aggregate (cost=21.57..21.87 rows=30 width=16) (never executed)

63. 0.000 0.000 ↓ 0.0 0 0

Hash Join (cost=10.68..21.38 rows=37 width=16) (never executed)

64. 0.000 0.000 ↓ 0.0 0 0

Seq Scan on offer offer_3 (cost=0..10.6 rows=37 width=16) (never executed)

  • Filter: ((((offer_3."bookingEmail")::text <> 'jeux-concours@passculture.app'::text) OR (offer_3."bookingEmail" IS NULL)) AND ((offer_3.type)::text <> ALL ('{EventType.ACTIVATION,ThingType.ACTIVATION}'::text[])))
65. 0.000 0.000 ↓ 0.0 0 0

Hash (cost=10.3..10.3 rows=30 width=8) (never executed)

66. 0.000 0.000 ↓ 0.0 0 0

Seq Scan on venue venue_4 (cost=0..10.3 rows=30 width=8) (never executed)

67. 0.000 0.000 ↓ 0.0 0 0

Hash (cost=54.67..54.67 rows=30 width=40) (never executed)

68. 0.000 0.000 ↓ 0.0 0 0

Subquery Scan on theoretic_revenue_per_venue (cost=53.99..54.67 rows=30 width=40) (never executed)

69. 0.000 0.000 ↓ 0.0 0 0

Aggregate (cost=53.99..54.37 rows=30 width=40) (never executed)

70. 0.000 0.000 ↓ 0.0 0 0

Hash Join (cost=35.77..53.44 rows=55 width=28) (never executed)

71. 0.000 0.000 ↓ 0.0 0 0

Seq Scan on booking booking_3 (cost=0..16 rows=300 width=28) (never executed)

  • Filter: (NOT booking_3."isCancelled")
72. 0.000 0.000 ↓ 0.0 0 0

Hash (cost=35.17..35.17 rows=48 width=16) (never executed)

73. 0.000 0.000 ↓ 0.0 0 0

Hash Join (cost=21.74..35.17 rows=48 width=16) (never executed)

74. 0.000 0.000 ↓ 0.0 0 0

Hash Join (cost=11.06..24.36 rows=48 width=16) (never executed)

75. 0.000 0.000 ↓ 0.0 0 0

Seq Scan on stock stock_3 (cost=0..12.6 rows=260 width=16) (never executed)

76. 0.000 0.000 ↓ 0.0 0 0

Hash (cost=10.6..10.6 rows=37 width=16) (never executed)

77. 0.000 0.000 ↓ 0.0 0 0

Seq Scan on offer offer_4 (cost=0..10.6 rows=37 width=16) (never executed)

  • Filter: ((((offer_4."bookingEmail")::text <> 'jeux-concours@passculture.app'::text) OR (offer_4."bookingEmail" IS NULL)) AND ((offer_4.type)::text <> ALL ('{EventType.ACTIVATION,ThingType.ACTIVATION}'::text[])))
78. 0.000 0.000 ↓ 0.0 0 0

Hash (cost=10.3..10.3 rows=30 width=8) (never executed)

79. 0.000 0.000 ↓ 0.0 0 0

Seq Scan on venue venue_5 (cost=0..10.3 rows=30 width=8) (never executed)

80. 0.000 0.000 ↓ 0.0 0 0

Hash (cost=22.17..22.17 rows=30 width=16) (never executed)

81. 0.000 0.000 ↓ 0.0 0 0

Subquery Scan on last_offer_creation_date (cost=21.57..22.17 rows=30 width=16) (never executed)

82. 0.000 0.000 ↓ 0.0 0 0

Aggregate (cost=21.57..21.87 rows=30 width=16) (never executed)

83. 0.000 0.000 ↓ 0.0 0 0

Hash Join (cost=10.68..21.38 rows=37 width=16) (never executed)

84. 0.000 0.000 ↓ 0.0 0 0

Seq Scan on offer offer_5 (cost=0..10.6 rows=37 width=16) (never executed)

  • Filter: ((((offer_5."bookingEmail")::text <> 'jeux-concours@passculture.app'::text) OR (offer_5."bookingEmail" IS NULL)) AND ((offer_5.type)::text <> ALL ('{EventType.ACTIVATION,ThingType.ACTIVATION}'::text[])))
85. 0.000 0.000 ↓ 0.0 0 0

Hash (cost=10.3..10.3 rows=30 width=8) (never executed)

86. 0.000 0.000 ↓ 0.0 0 0

Seq Scan on venue venue_6 (cost=0..10.3 rows=30 width=8) (never executed)

87. 0.000 0.000 ↓ 0.0 0 0

Hash (cost=22.17..22.17 rows=30 width=16) (never executed)

88. 0.000 0.000 ↓ 0.0 0 0

Subquery Scan on offers_created_per_venue (cost=21.57..22.17 rows=30 width=16) (never executed)

89. 0.000 0.000 ↓ 0.0 0 0

Aggregate (cost=21.57..21.87 rows=30 width=16) (never executed)

90. 0.000 0.000 ↓ 0.0 0 0

Hash Join (cost=10.68..21.38 rows=37 width=16) (never executed)

91. 0.000 0.000 ↓ 0.0 0 0

Seq Scan on offer offer_6 (cost=0..10.6 rows=37 width=16) (never executed)

  • Filter: ((((offer_6."bookingEmail")::text <> 'jeux-concours@passculture.app'::text) OR (offer_6."bookingEmail" IS NULL)) AND ((offer_6.type)::text <> ALL ('{EventType.ACTIVATION,ThingType.ACTIVATION}'::text[])))
92. 0.000 0.000 ↓ 0.0 0 0

Hash (cost=10.3..10.3 rows=30 width=8) (never executed)

93. 0.000 0.000 ↓ 0.0 0 0

Seq Scan on venue venue_7 (cost=0..10.3 rows=30 width=8) (never executed)

94. 0.000 0.000 ↓ 0.0 0 0

Hash (cost=53.77..53.77 rows=30 width=40) (never executed)

95. 0.000 0.000 ↓ 0.0 0 0

Subquery Scan on real_revenue_per_venue (cost=53.09..53.77 rows=30 width=40) (never executed)

96. 0.000 0.000 ↓ 0.0 0 0

Aggregate (cost=53.09..53.47 rows=30 width=40) (never executed)

97. 0.000 0.000 ↓ 0.0 0 0

Hash Join (cost=35.63..52.61 rows=48 width=28) (never executed)

98. 0.000 0.000 ↓ 0.0 0 0

Hash Join (cost=24.96..41.8 rows=48 width=28) (never executed)

99. 0.000 0.000 ↓ 0.0 0 0

Seq Scan on booking booking_4 (cost=0..16 rows=150 width=28) (never executed)

  • Filter: ((NOT booking_4."isCancelled") AND booking_4."isUsed")
100. 0.000 0.000 ↓ 0.0 0 0

Hash (cost=24.36..24.36 rows=48 width=16) (never executed)

101. 0.000 0.000 ↓ 0.0 0 0

Hash Join (cost=11.06..24.36 rows=48 width=16) (never executed)

102. 0.000 0.000 ↓ 0.0 0 0

Seq Scan on stock stock_4 (cost=0..12.6 rows=260 width=16) (never executed)

103. 0.000 0.000 ↓ 0.0 0 0

Hash (cost=10.6..10.6 rows=37 width=16) (never executed)

104. 0.000 0.000 ↓ 0.0 0 0

Seq Scan on offer offer_7 (cost=0..10.6 rows=37 width=16) (never executed)

  • Filter: ((((offer_7."bookingEmail")::text <> 'jeux-concours@passculture.app'::text) OR (offer_7."bookingEmail" IS NULL)) AND ((offer_7.type)::text <> ALL ('{EventType.ACTIVATION,ThingType.ACTIVATION}'::text[])))
105. 0.000 0.000 ↓ 0.0 0 0

Hash (cost=10.3..10.3 rows=30 width=8) (never executed)

106. 0.000 0.000 ↓ 0.0 0 0

Seq Scan on venue venue_8 (cost=0..10.3 rows=30 width=8) (never executed)

Planning time : 15.655 ms
Execution time : 1.053 ms