explain.depesz.com

PostgreSQL's explain analyze made readable

Result: vFLU

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

Unique (cost=8,099,029.69..8,392,543.40 rows=5,336,613 width=307) (actual rows= loops=)

2. 0.000 0.000 ↓ 0.0

Sort (cost=8,099,029.69..8,112,371.22 rows=5,336,613 width=307) (actual rows= loops=)

  • Sort Key: (lower((tag_persons.email)::text)), analytics_persons.id, ((analytics_persons.json ->> 'email'::text)), (to_timestamp((((min(analytics."timestamp")) / 1000))::double precision)), (to_timestamp((((max(analytics_1."timestamp")) / 1000))::double precision)), ((analytics_persons_1.json ->> 'MBTI'::text)), (to_timestamp((((max(analytics_2."timestamp")) / 1000))::double precision)), (to_timestamp(((web_activity.last / 1000))::double precision)), (to_timestamp((((max(analytics_4."timestamp")) / 1000))::double precision)), (to_timestamp((((max(analytics_9."timestamp")) / 1000))::double precision)), (count(1)), (count(1)), (count(1)), (count(1)), (count(1)), create_goal_from_topic.cnt, rels_as_manager.cnt, rels_as_tm.cnt, (count(1)), (count(1)), "*VALUES*".column2
3. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=4,511,398.05..5,204,437.58 rows=5,336,613 width=307) (actual rows= loops=)

  • Hash Cond: ((analytics_persons.id)::text = create_goal_from_topic.create_goal_from_topic_user)
4. 0.000 0.000 ↓ 0.0

Merge Left Join (cost=4,140,250.81..4,524,300.44 rows=5,336,613 width=587) (actual rows= loops=)

  • Merge Cond: ((analytics_persons.id)::text = ((analytics_11.object ->> 'user'::text)))
5. 0.000 0.000 ↓ 0.0

Merge Left Join (cost=3,956,688.03..4,313,120.63 rows=5,336,613 width=579) (actual rows= loops=)

  • Merge Cond: ((analytics_persons.id)::text = ((analytics_10.object ->> 'user'::text)))
6. 0.000 0.000 ↓ 0.0

Merge Left Join (cost=3,647,273.06..3,975,621.65 rows=5,336,613 width=571) (actual rows= loops=)

  • Merge Cond: ((analytics_persons.id)::text = ((analytics_9.object ->> 'user'::text)))
7. 0.000 0.000 ↓ 0.0

Merge Left Join (cost=3,276,126.16..3,574,055.78 rows=5,336,613 width=555) (actual rows= loops=)

  • Merge Cond: ((analytics_persons.id)::text = web_activity."user")
8. 0.000 0.000 ↓ 0.0

Merge Left Join (cost=2,287,508.60..2,490,648.65 rows=279,770 width=547) (actual rows= loops=)

  • Merge Cond: ((analytics_persons.id)::text = ((analytics_7.object ->> 'user'::text)))
9. 0.000 0.000 ↓ 0.0

Merge Left Join (cost=1,915,764.84..2,117,481.52 rows=279,770 width=539) (actual rows= loops=)

  • Merge Cond: ((analytics_persons.id)::text = ((analytics_6.object ->> 'user'::text)))
10. 0.000 0.000 ↓ 0.0

Merge Left Join (cost=1,544,021.08..1,744,314.39 rows=279,770 width=531) (actual rows= loops=)

  • Merge Cond: ((analytics_persons.id)::text = ((analytics_5.object ->> 'user'::text)))
11. 0.000 0.000 ↓ 0.0

Merge Left Join (cost=1,234,606.10..1,433,427.03 rows=279,770 width=523) (actual rows= loops=)

  • Merge Cond: ((analytics_persons.id)::text = ((analytics_4.object ->> 'user'::text)))
12. 0.000 0.000 ↓ 0.0

Merge Left Join (cost=863,459.20..1,060,685.18 rows=279,770 width=507) (actual rows= loops=)

  • Merge Cond: ((analytics_persons.id)::text = ((analytics_2.object ->> 'user'::text)))
13. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=751,131.95..942,063.10 rows=279,770 width=499) (actual rows= loops=)

14. 0.000 0.000 ↓ 0.0

Merge Left Join (cost=751,131.54..756,226.31 rows=279,770 width=318) (actual rows= loops=)

  • Merge Cond: ((analytics_persons.id)::text = ((analytics_1.object ->> 'user'::text)))
15. 0.000 0.000 ↓ 0.0

Merge Left Join (cost=695,391.00..695,515.09 rows=14,941 width=310) (actual rows= loops=)

  • Merge Cond: (((analytics_persons.id)::text) = ((analytics.object ->> 'to'::text)))
16. 0.000 0.000 ↓ 0.0

Sort (cost=9,120.60..9,157.95 rows=14,941 width=302) (actual rows= loops=)

  • Sort Key: ((analytics_persons.id)::text)
17. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=4,532.42..5,988.16 rows=14,941 width=302) (actual rows= loops=)

  • Hash Cond: ((analytics_persons.id)::text = rels_as_tm.tm_user)
18. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=2,337.52..3,646.10 rows=14,941 width=294) (actual rows= loops=)

  • Hash Cond: ((analytics_persons.id)::text = rels_as_manager.mgr_user)
19. 0.000 0.000 ↓ 0.0

Hash Right Join (cost=142.62..1,304.04 rows=14,941 width=286) (actual rows= loops=)

  • Hash Cond: ((analytics_persons.json ->> 'email'::text) = lower((tag_persons.email)::text))
20. 0.000 0.000 ↓ 0.0

Seq Scan on analytics_persons (cost=0.00..849.00 rows=16,300 width=232) (actual rows= loops=)

21. 0.000 0.000 ↓ 0.0

Hash (cost=115.25..115.25 rows=2,190 width=54) (actual rows= loops=)

22. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=3.68..115.25 rows=2,190 width=54) (actual rows= loops=)

  • Hash Cond: (lower((tag_persons.email)::text) = "*VALUES*".column1)
23. 0.000 0.000 ↓ 0.0

Seq Scan on tag_persons (cost=0.00..99.28 rows=2,190 width=22) (actual rows= loops=)

  • Filter: ((tag)::text = '#PILOT:2-SAPHR_FG_ARIBA'::text)
24. 0.000 0.000 ↓ 0.0

Hash (cost=1.84..1.84 rows=147 width=64) (actual rows= loops=)

25. 0.000 0.000 ↓ 0.0

Values Scan on "*VALUES*" (cost=0.00..1.84 rows=147 width=64) (actual rows= loops=)

26. 0.000 0.000 ↓ 0.0

Hash (cost=2,193.69..2,193.69 rows=97 width=40) (actual rows= loops=)

27. 0.000 0.000 ↓ 0.0

Subquery Scan on rels_as_manager (cost=2,190.26..2,193.69 rows=97 width=40) (actual rows= loops=)

28. 0.000 0.000 ↓ 0.0

GroupAggregate (cost=2,190.26..2,192.72 rows=97 width=40) (actual rows= loops=)

  • Group Key: (((analytics_relationships.json -> 'roles'::text) ->> 'manager'::text))
29. 0.000 0.000 ↓ 0.0

Sort (cost=2,190.26..2,190.60 rows=133 width=32) (actual rows= loops=)

  • Sort Key: (((analytics_relationships.json -> 'roles'::text) ->> 'manager'::text))
30. 0.000 0.000 ↓ 0.0

Seq Scan on analytics_relationships (cost=0.00..2,185.57 rows=133 width=32) (actual rows= loops=)

  • Filter: (((json -> 'roles'::text) ->> 'type'::text) = 'hierarchy'::text)
31. 0.000 0.000 ↓ 0.0

Hash (cost=2,193.69..2,193.69 rows=97 width=40) (actual rows= loops=)

32. 0.000 0.000 ↓ 0.0

Subquery Scan on rels_as_tm (cost=2,190.26..2,193.69 rows=97 width=40) (actual rows= loops=)

33. 0.000 0.000 ↓ 0.0

GroupAggregate (cost=2,190.26..2,192.72 rows=97 width=40) (actual rows= loops=)

  • Group Key: (((analytics_relationships_1.json -> 'roles'::text) ->> 'team_member'::text))
34. 0.000 0.000 ↓ 0.0

Sort (cost=2,190.26..2,190.60 rows=133 width=32) (actual rows= loops=)

  • Sort Key: (((analytics_relationships_1.json -> 'roles'::text) ->> 'team_member'::text))
35. 0.000 0.000 ↓ 0.0

Seq Scan on analytics_relationships analytics_relationships_1 (cost=0.00..2,185.57 rows=133 width=32) (actual rows= loops=)

  • Filter: (((json -> 'roles'::text) ->> 'type'::text) = 'hierarchy'::text)
36. 0.000 0.000 ↓ 0.0

Materialize (cost=686,270.40..686,270.69 rows=9 width=40) (actual rows= loops=)

37. 0.000 0.000 ↓ 0.0

GroupAggregate (cost=686,270.40..686,270.58 rows=9 width=40) (actual rows= loops=)

  • Group Key: ((analytics.object ->> 'to'::text))
38. 0.000 0.000 ↓ 0.0

Sort (cost=686,270.40..686,270.42 rows=9 width=40) (actual rows= loops=)

  • Sort Key: ((analytics.object ->> 'to'::text))
39. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on analytics (cost=21,969.10..686,270.26 rows=9 width=40) (actual rows= loops=)

  • Recheck Cond: (event = 'EMAIL_TRACING'::bpchar)
  • Filter: (((object ->> 'event'::text) = 'Click'::text) AND ((object ->> 'link'::text) = 'https://app.dabra.ai/#/signup'::text))
40. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on analytics_event_idx (cost=0.00..21,969.10 rows=370,739 width=0) (actual rows= loops=)

  • Index Cond: (event = 'EMAIL_TRACING'::bpchar)
41. 0.000 0.000 ↓ 0.0

Sort (cost=55,740.54..55,749.90 rows=3,745 width=40) (actual rows= loops=)

  • Sort Key: ((analytics_1.object ->> 'user'::text))
42. 0.000 0.000 ↓ 0.0

HashAggregate (cost=55,434.00..55,480.81 rows=3,745 width=40) (actual rows= loops=)

  • Group Key: (analytics_1.object ->> 'user'::text)
43. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on analytics analytics_1 (cost=910.65..55,357.81 rows=15,238 width=40) (actual rows= loops=)

  • Recheck Cond: (event = 'PERSON_SET_CONSENT'::bpchar)
44. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on analytics_event_idx (cost=0.00..906.84 rows=15,238 width=0) (actual rows= loops=)

  • Index Cond: (event = 'PERSON_SET_CONSENT'::bpchar)
45. 0.000 0.000 ↓ 0.0

Index Scan using analytics_persons_pkey on analytics_persons analytics_persons_1 (cost=0.41..0.65 rows=1 width=232) (actual rows= loops=)

  • Index Cond: (id = analytics_persons.id)
46. 0.000 0.000 ↓ 0.0

Sort (cost=112,327.25..112,327.75 rows=200 width=40) (actual rows= loops=)

  • Sort Key: ((analytics_2.object ->> 'user'::text))
47. 0.000 0.000 ↓ 0.0

HashAggregate (cost=112,315.61..112,317.61 rows=200 width=40) (actual rows= loops=)

  • Group Key: ((analytics_2.object ->> 'user'::text))
48. 0.000 0.000 ↓ 0.0

HashAggregate (cost=111,553.71..111,858.47 rows=30,476 width=80) (actual rows= loops=)

  • Group Key: analytics_2."timestamp", ('CALENDAR_CONNECT'::text), ((analytics_2.object ->> 'user'::text)), (to_timestamp(((analytics_2."timestamp" / 1000))::double precision))
49. 0.000 0.000 ↓ 0.0

Append (cost=910.65..111,248.95 rows=30,476 width=80) (actual rows= loops=)

50. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on analytics analytics_2 (cost=910.65..55,472.09 rows=15,238 width=80) (actual rows= loops=)

  • Recheck Cond: (event = 'EXTERNAL_CALENDAR_CONNECT'::bpchar)
51. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on analytics_event_idx (cost=0.00..906.84 rows=15,238 width=0) (actual rows= loops=)

  • Index Cond: (event = 'EXTERNAL_CALENDAR_CONNECT'::bpchar)
52. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on analytics analytics_3 (cost=910.65..55,472.09 rows=15,238 width=80) (actual rows= loops=)

  • Recheck Cond: (event = 'CALENDAR_DISCONNECT'::bpchar)
53. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on analytics_event_idx (cost=0.00..906.84 rows=15,238 width=0) (actual rows= loops=)

  • Index Cond: (event = 'CALENDAR_DISCONNECT'::bpchar)
54. 0.000 0.000 ↓ 0.0

Materialize (cost=371,146.90..371,147.18 rows=8 width=48) (actual rows= loops=)

55. 0.000 0.000 ↓ 0.0

GroupAggregate (cost=371,146.90..371,147.08 rows=8 width=48) (actual rows= loops=)

  • Group Key: ((analytics_4.object ->> 'user'::text))
56. 0.000 0.000 ↓ 0.0

Sort (cost=371,146.90..371,146.92 rows=8 width=40) (actual rows= loops=)

  • Sort Key: ((analytics_4.object ->> 'user'::text))
57. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on analytics analytics_4 (cost=135,136.69..371,146.78 rows=8 width=40) (actual rows= loops=)

  • Recheck Cond: (((object ->> 'method'::text) = 'POST'::text) AND (event = 'WEB_REQUEST'::bpchar))
  • Filter: (("timestamp" > 0) AND ((object ->> 'url'::text) ~~ '/meeting/%/topic'::text))
58. 0.000 0.000 ↓ 0.0

BitmapAnd (cost=135,136.69..135,136.69 rows=79,599 width=0) (actual rows= loops=)

59. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on idx_analytics_object_method (cost=0.00..8,923.21 rows=427,570 width=0) (actual rows= loops=)

  • Index Cond: ((object ->> 'method'::text) = 'POST'::text)
60. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on analytics_event_idx (cost=0.00..126,213.22 rows=2,130,222 width=0) (actual rows= loops=)

  • Index Cond: (event = 'WEB_REQUEST'::bpchar)
61. 0.000 0.000 ↓ 0.0

Materialize (cost=309,414.97..309,415.07 rows=3 width=40) (actual rows= loops=)

62. 0.000 0.000 ↓ 0.0

GroupAggregate (cost=309,414.97..309,415.03 rows=3 width=40) (actual rows= loops=)

  • Group Key: ((analytics_5.object ->> 'user'::text))
63. 0.000 0.000 ↓ 0.0

Sort (cost=309,414.97..309,414.98 rows=3 width=32) (actual rows= loops=)

  • Sort Key: ((analytics_5.object ->> 'user'::text))
64. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on analytics analytics_5 (cost=211,695.39..309,414.95 rows=3 width=32) (actual rows= loops=)

  • Recheck Cond: (((object ->> 'method'::text) = 'POST'::text) AND ("timestamp" > '1569715200000'::bigint) AND (event = 'WEB_REQUEST'::bpchar))
  • Filter: ((object ->> 'url'::text) ~~ '/meeting/%/topic'::text)
65. 0.000 0.000 ↓ 0.0

BitmapAnd (cost=211,695.39..211,695.39 rows=28,681 width=0) (actual rows= loops=)

66. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on idx_analytics_object_method (cost=0.00..8,923.21 rows=427,570 width=0) (actual rows= loops=)

  • Index Cond: ((object ->> 'method'::text) = 'POST'::text)
67. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on idx_analytics_timestamp (cost=0.00..76,558.46 rows=4,122,936 width=0) (actual rows= loops=)

  • Index Cond: ("timestamp" > '1569715200000'::bigint)
68. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on analytics_event_idx (cost=0.00..126,213.22 rows=2,130,222 width=0) (actual rows= loops=)

  • Index Cond: (event = 'WEB_REQUEST'::bpchar)
69. 0.000 0.000 ↓ 0.0

Materialize (cost=371,743.76..371,743.80 rows=1 width=40) (actual rows= loops=)

70. 0.000 0.000 ↓ 0.0

GroupAggregate (cost=371,743.76..371,743.79 rows=1 width=40) (actual rows= loops=)

  • Group Key: ((analytics_6.object ->> 'user'::text))
71. 0.000 0.000 ↓ 0.0

Sort (cost=371,743.76..371,743.77 rows=1 width=32) (actual rows= loops=)

  • Sort Key: ((analytics_6.object ->> 'user'::text))
72. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on analytics analytics_6 (cost=135,136.69..371,743.75 rows=1 width=32) (actual rows= loops=)

  • Recheck Cond: (((object ->> 'method'::text) = 'POST'::text) AND (event = 'WEB_REQUEST'::bpchar))
  • Filter: (("timestamp" > 0) AND ((object ->> 'url'::text) ~~ '/meeting/%/topic'::text) AND (((object -> 'body'::text) ->> 'private'::text) = 'false'::text))
73. 0.000 0.000 ↓ 0.0

BitmapAnd (cost=135,136.69..135,136.69 rows=79,599 width=0) (actual rows= loops=)

74. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on idx_analytics_object_method (cost=0.00..8,923.21 rows=427,570 width=0) (actual rows= loops=)

  • Index Cond: ((object ->> 'method'::text) = 'POST'::text)
75. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on analytics_event_idx (cost=0.00..126,213.22 rows=2,130,222 width=0) (actual rows= loops=)

  • Index Cond: (event = 'WEB_REQUEST'::bpchar)
76. 0.000 0.000 ↓ 0.0

Materialize (cost=371,743.76..371,743.80 rows=1 width=40) (actual rows= loops=)

77. 0.000 0.000 ↓ 0.0

GroupAggregate (cost=371,743.76..371,743.79 rows=1 width=40) (actual rows= loops=)

  • Group Key: ((analytics_7.object ->> 'user'::text))
78. 0.000 0.000 ↓ 0.0

Sort (cost=371,743.76..371,743.77 rows=1 width=32) (actual rows= loops=)

  • Sort Key: ((analytics_7.object ->> 'user'::text))
79. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on analytics analytics_7 (cost=135,136.69..371,743.75 rows=1 width=32) (actual rows= loops=)

  • Recheck Cond: (((object ->> 'method'::text) = 'POST'::text) AND (event = 'WEB_REQUEST'::bpchar))
  • Filter: (("timestamp" > 0) AND ((object ->> 'url'::text) ~~ '/meeting/%/topic'::text) AND (((object -> 'body'::text) ->> 'private'::text) = 'true'::text))
80. 0.000 0.000 ↓ 0.0

BitmapAnd (cost=135,136.69..135,136.69 rows=79,599 width=0) (actual rows= loops=)

81. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on idx_analytics_object_method (cost=0.00..8,923.21 rows=427,570 width=0) (actual rows= loops=)

  • Index Cond: ((object ->> 'method'::text) = 'POST'::text)
82. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on analytics_event_idx (cost=0.00..126,213.22 rows=2,130,222 width=0) (actual rows= loops=)

  • Index Cond: (event = 'WEB_REQUEST'::bpchar)
83. 0.000 0.000 ↓ 0.0

Sort (cost=988,617.56..988,627.09 rows=3,815 width=40) (actual rows= loops=)

  • Sort Key: web_activity."user
84. 0.000 0.000 ↓ 0.0

Subquery Scan on web_activity (cost=988,304.78..988,390.61 rows=3,815 width=40) (actual rows= loops=)

85. 0.000 0.000 ↓ 0.0

HashAggregate (cost=988,304.78..988,352.46 rows=3,815 width=40) (actual rows= loops=)

  • Group Key: (analytics_8.object ->> 'user'::text)
86. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on analytics analytics_8 (cost=126,745.78..977,653.67 rows=2,130,222 width=40) (actual rows= loops=)

  • Recheck Cond: (event = 'WEB_REQUEST'::bpchar)
  • Filter: ("timestamp" > 0)
87. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on analytics_event_idx (cost=0.00..126,213.22 rows=2,130,222 width=0) (actual rows= loops=)

  • Index Cond: (event = 'WEB_REQUEST'::bpchar)
88. 0.000 0.000 ↓ 0.0

Materialize (cost=371,146.90..371,147.18 rows=8 width=48) (actual rows= loops=)

89. 0.000 0.000 ↓ 0.0

GroupAggregate (cost=371,146.90..371,147.08 rows=8 width=48) (actual rows= loops=)

  • Group Key: ((analytics_9.object ->> 'user'::text))
90. 0.000 0.000 ↓ 0.0

Sort (cost=371,146.90..371,146.92 rows=8 width=40) (actual rows= loops=)

  • Sort Key: ((analytics_9.object ->> 'user'::text))
91. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on analytics analytics_9 (cost=135,136.69..371,146.78 rows=8 width=40) (actual rows= loops=)

  • Recheck Cond: (((object ->> 'method'::text) = 'POST'::text) AND (event = 'WEB_REQUEST'::bpchar))
  • Filter: (("timestamp" > 0) AND ((object ->> 'url'::text) ~~ '/meeting/%/topic/%/note'::text))
92. 0.000 0.000 ↓ 0.0

BitmapAnd (cost=135,136.69..135,136.69 rows=79,599 width=0) (actual rows= loops=)

93. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on idx_analytics_object_method (cost=0.00..8,923.21 rows=427,570 width=0) (actual rows= loops=)

  • Index Cond: ((object ->> 'method'::text) = 'POST'::text)
94. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on analytics_event_idx (cost=0.00..126,213.22 rows=2,130,222 width=0) (actual rows= loops=)

  • Index Cond: (event = 'WEB_REQUEST'::bpchar)
95. 0.000 0.000 ↓ 0.0

Materialize (cost=309,414.97..309,415.07 rows=3 width=40) (actual rows= loops=)

96. 0.000 0.000 ↓ 0.0

GroupAggregate (cost=309,414.97..309,415.03 rows=3 width=40) (actual rows= loops=)

  • Group Key: ((analytics_10.object ->> 'user'::text))
97. 0.000 0.000 ↓ 0.0

Sort (cost=309,414.97..309,414.98 rows=3 width=32) (actual rows= loops=)

  • Sort Key: ((analytics_10.object ->> 'user'::text))
98. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on analytics analytics_10 (cost=211,695.39..309,414.95 rows=3 width=32) (actual rows= loops=)

  • Recheck Cond: (((object ->> 'method'::text) = 'POST'::text) AND ("timestamp" > '1569715200000'::bigint) AND (event = 'WEB_REQUEST'::bpchar))
  • Filter: ((object ->> 'url'::text) ~~ '/meeting/%/topic/%/note'::text)
99. 0.000 0.000 ↓ 0.0

BitmapAnd (cost=211,695.39..211,695.39 rows=28,681 width=0) (actual rows= loops=)

100. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on idx_analytics_object_method (cost=0.00..8,923.21 rows=427,570 width=0) (actual rows= loops=)

  • Index Cond: ((object ->> 'method'::text) = 'POST'::text)
101. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on idx_analytics_timestamp (cost=0.00..76,558.46 rows=4,122,936 width=0) (actual rows= loops=)

  • Index Cond: ("timestamp" > '1569715200000'::bigint)
102. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on analytics_event_idx (cost=0.00..126,213.22 rows=2,130,222 width=0) (actual rows= loops=)

  • Index Cond: (event = 'WEB_REQUEST'::bpchar)
103. 0.000 0.000 ↓ 0.0

Materialize (cost=183,562.78..183,562.84 rows=2 width=40) (actual rows= loops=)

104. 0.000 0.000 ↓ 0.0

GroupAggregate (cost=183,562.78..183,562.82 rows=2 width=40) (actual rows= loops=)

  • Group Key: ((analytics_11.object ->> 'user'::text))
105. 0.000 0.000 ↓ 0.0

Sort (cost=183,562.78..183,562.78 rows=2 width=32) (actual rows= loops=)

  • Sort Key: ((analytics_11.object ->> 'user'::text))
106. 0.000 0.000 ↓ 0.0

Index Scan using idx_analytics_object_method on analytics analytics_11 (cost=0.43..183,562.77 rows=2 width=32) (actual rows= loops=)

  • Index Cond: ((object ->> 'method'::text) = 'PUT'::text)
  • Filter: (("timestamp" > 0) AND (event = 'WEB_REQUEST'::bpchar) AND ((object ->> 'url'::text) ~~ '/relationship/%/goal/%/discuss'::text))
107. 0.000 0.000 ↓ 0.0

Hash (cost=371,147.14..371,147.14 rows=8 width=40) (actual rows= loops=)

108. 0.000 0.000 ↓ 0.0

Subquery Scan on create_goal_from_topic (cost=371,146.90..371,147.14 rows=8 width=40) (actual rows= loops=)

109. 0.000 0.000 ↓ 0.0

GroupAggregate (cost=371,146.90..371,147.06 rows=8 width=40) (actual rows= loops=)

  • Group Key: ((analytics_12.object ->> 'user'::text))
110. 0.000 0.000 ↓ 0.0

Sort (cost=371,146.90..371,146.92 rows=8 width=32) (actual rows= loops=)

  • Sort Key: ((analytics_12.object ->> 'user'::text))
111. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on analytics analytics_12 (cost=135,136.69..371,146.78 rows=8 width=32) (actual rows= loops=)

  • Recheck Cond: (((object ->> 'method'::text) = 'POST'::text) AND (event = 'WEB_REQUEST'::bpchar))
  • Filter: (("timestamp" > 0) AND ((object ->> 'url'::text) ~~ '/meeting/%/topic/%/goal'::text))
112. 0.000 0.000 ↓ 0.0

BitmapAnd (cost=135,136.69..135,136.69 rows=79,599 width=0) (actual rows= loops=)

113. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on idx_analytics_object_method (cost=0.00..8,923.21 rows=427,570 width=0) (actual rows= loops=)

  • Index Cond: ((object ->> 'method'::text) = 'POST'::text)
114. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on analytics_event_idx (cost=0.00..126,213.22 rows=2,130,222 width=0) (actual rows= loops=)

  • Index Cond: (event = 'WEB_REQUEST'::bpchar)