#1 | Group | |
#2 | â”” Sort | |
#3 |  └ Hash Join | |
#4 |   ├ Hash Join | |
#5 |   │├ Hash Join | |
#6 |   ││├ Merge Join | |
#7 |   │││├ Merge Join | |
#8 |   ││││├ Merge Join | |
#9 |   │││││├ Merge Join | |
#10 |   ││││││├ Merge Join | |
#11 |   │││││││├ Index Scan | |
#12 |   │││││││└ GroupAggregate | |
#13 |   │││││││ └ Sort | |
#14 |   │││││││  └ Hash Join | |
#15 |   │││││││   ├ Seq Scan | |
#16 |   │││││││   └ Hash | |
#17 |   │││││││    └ Hash Join | |
#18 |   │││││││     ├ Hash Join | |
#19 |   │││││││     │├ Hash Join | |
#20 |   │││││││     ││├ Hash Join | |
#21 |   │││││││     │││├ Hash Join | |
#22 |   │││││││     ││││├ Hash Join | |
#23 |   │││││││     │││││├ Seq Scan | |
#24 |   │││││││     │││││└ Hash | |
#25 |   │││││││     │││││ └ Seq Scan | |
#26 |   │││││││     ││││└ Hash | |
#27 |   │││││││     ││││ └ Seq Scan | |
#28 |   │││││││     │││└ Hash | |
#29 |   │││││││     │││ └ Subquery Scan | |
#30 |   │││││││     │││  └ GroupAggregate | |
#31 |   │││││││     │││   └ Sort | |
#32 |   │││││││     │││    └ Gather | |
#33 |   │││││││     │││     └ Nested Loop | |
#34 |   │││││││     │││      ├ Nested Loop Join | |
#35 |   │││││││     │││      │├ Nested Loop | |
#36 |   │││││││     │││      ││├ Hash Join | |
#37 |   │││││││     │││      │││├ Parallel Seq Scan | |
#38 |   │││││││     │││      │││└ Hash | |
#39 |   │││││││     │││      │││ └ Hash Join | |
#40 |   │││││││     │││      │││  ├ Hash Join | |
#41 |   │││││││     │││      │││  │├ Hash Join | |
#42 |   │││││││     │││      │││  ││├ Seq Scan | |
#43 |   │││││││     │││      │││  ││└ Hash | |
#44 |   │││││││     │││      │││  ││ └ Seq Scan | |
#45 |   │││││││     │││      │││  │└ Hash | |
#46 |   │││││││     │││      │││  │ └ Seq Scan | |
#47 |   │││││││     │││      │││  └ Hash | |
#48 |   │││││││     │││      │││   └ Seq Scan | |
#49 |   │││││││     │││      ││└ Index Only Scan | |
#50 |   │││││││     │││      │└ Index Scan | |
#51 |   │││││││     │││      └ Index Only Scan | |
#52 |   │││││││     ││└ Hash | |
#53 |   │││││││     ││ └ Seq Scan | |
#54 |   │││││││     │└ Hash | |
#55 |   │││││││     │ └ Seq Scan | |
#56 |   │││││││     └ Hash | |
#57 |   │││││││      └ Seq Scan | |
#58 |   ││││││└ GroupAggregate | |
#59 |   ││││││ └ Sort | |
#60 |   ││││││  └ Gather | |
#61 |   ││││││   └ Hash Join | |
#62 |   ││││││    ├ Parallel Hash Join | |
#63 |   ││││││    │├ Parallel Hash Join | |
#64 |   ││││││    ││├ Parallel Seq Scan | |
#65 |   ││││││    ││└ Parallel Hash | |
#66 |   ││││││    ││ └ Parallel Seq Scan | |
#67 |   ││││││    │└ Parallel Hash | |
#68 |   ││││││    │ └ Parallel Seq Scan | |
#69 |   ││││││    └ Hash | |
#70 |   ││││││     └ Seq Scan | |
#71 |   │││││└ GroupAggregate | |
#72 |   │││││ └ Sort | |
#73 |   │││││  └ Hash Join | |
#74 |   │││││   ├ Seq Scan | |
#75 |   │││││   └ Hash | |
#76 |   │││││    └ Gather | |
#77 |   │││││     └ Parallel Hash Join | |
#78 |   │││││      ├ Parallel Hash Join | |
#79 |   │││││      │├ Parallel Seq Scan | |
#80 |   │││││      │└ Parallel Hash | |
#81 |   │││││      │ └ Hash Join | |
#82 |   │││││      │  ├ Parallel Hash Join | |
#83 |   │││││      │  │├ Parallel Hash Join | |
#84 |   │││││      │  ││├ Parallel Seq Scan | |
#85 |   │││││      │  ││└ Parallel Hash | |
#86 |   │││││      │  ││ └ Parallel Seq Scan | |
#87 |   │││││      │  │└ Parallel Hash | |
#88 |   │││││      │  │ └ Parallel Seq Scan | |
#89 |   │││││      │  └ Hash | |
#90 |   │││││      │   └ Seq Scan | |
#91 |   │││││      └ Parallel Hash | |
#92 |   │││││       └ Parallel Seq Scan | |
#93 |   ││││└ Index Scan | |
#94 |   │││└ Materialize | |
#95 |   │││ └ GroupAggregate | |
#96 |   │││  └ Sort | |
#97 |   │││   └ Hash Join | |
#98 |   │││    ├ Hash Join | |
#99 |   │││    │├ Seq Scan | |
#100 |   │││    │└ Hash | |
#101 |   │││    │ └ Seq Scan | |
#102 |   │││    └ Hash | |
#103 |   │││     └ Hash Join | |
#104 |   │││      ├ Hash Join | |
#105 |   │││      │├ Hash Join | |
#106 |   │││      ││├ Seq Scan | |
#107 |   │││      ││└ Hash | |
#108 |   │││      ││ └ Hash Join | |
#109 |   │││      ││  ├ Seq Scan | |
#110 |   │││      ││  └ Hash | |
#111 |   │││      ││   └ Seq Scan | |
#112 |   │││      │└ Hash | |
#113 |   │││      │ └ Seq Scan | |
#114 |   │││      └ Hash | |
#115 |   │││       └ Seq Scan | |
#116 |   ││└ Hash | |
#117 |   ││ └ Hash Join | |
#118 |   ││  ├ Hash Join | |
#119 |   ││  │├ Hash Join | |
#120 |   ││  ││├ Hash Join | |
#121 |   ││  │││├ Seq Scan | |
#122 |   ││  │││└ Hash | |
#123 |   ││  │││ └ Seq Scan | |
#124 |   ││  ││└ Hash | |
#125 |   ││  ││ └ Seq Scan | |
#126 |   ││  │└ Hash | |
#127 |   ││  │ └ Seq Scan | |
#128 |   ││  └ Hash | |
#129 |   ││   └ Seq Scan | |
#130 |   │└ Hash | |
#131 |   │ └ Subquery Scan | |
#132 |   │  └ GroupAggregate | |
#133 |   │   └ Sort | |
#134 |   │    └ Gather | |
#135 |   │     └ Hash Join | |
#136 |   │      ├ Parallel Hash Join | |
#137 |   │      │├ Nested Loop | |
#138 |   │      ││├ Nested Loop | |
#139 |   │      │││├ Hash Join | |
#140 |   │      ││││├ Parallel Hash Join | |
#141 |   │      │││││├ Parallel Seq Scan | |
#142 |   │      │││││└ Parallel Hash | |
#143 |   │      │││││ └ Parallel Seq Scan | |
#144 |   │      ││││└ Hash | |
#145 |   │      ││││ └ Seq Scan | |
#146 |   │      │││└ Index Scan | |
#147 |   │      ││└ Index Scan | |
#148 |   │      │└ Parallel Hash | |
#149 |   │      │ └ Parallel Seq Scan | |
#150 |   │      └ Hash | |
#151 |   │       └ Seq Scan | |
#152 |   └ Hash | |
#153 |    └ Subquery Scan | |
#154 |     └ WindowAgg | |
#155 |      └ Sort | |
#156 |       └ Gather | |
#157 |        └ Parallel Hash Join | |
#158 |         ├ Parallel Hash Join | |
#159 |         │├ Parallel Seq Scan | |
#160 |         │└ Parallel Hash | |
#161 |         │ └ Parallel Seq Scan | |
#162 |         └ Parallel Hash | |
#163 |          └ Parallel Hash Join | |
#164 |           ├ Merge Join | |
#165 |           │├ Parallel Index Scan | |
#166 |           │└ Index Scan | |
#167 |           └ Parallel Hash | |
#168 |            └ Parallel Seq Scan |
Group (cost=59357920.75..61435742.23 rows=43743610 width=379)
Group Key: r.gid, r.name, ac.name, temp.name, r.length, rrl.recording_links, (array_agg(jsonb_build_array(t.name, rt.count, g.gid))), (array_agg(jsonb_build_array(t_2.name, rgt.count, rg.gid, g_2.gid))), rg.gid, (array_agg(jsonb_build_array(a_1.gid, a_1.begin_date_year, a_1.end_date_year, at_1.name, ag_1.name, ar.name, arl.artist_links))), (array_agg(jsonb_build_array(t_1.name, at_2.count, a_3.gid, g_1.gid))), temp.release_mbid, temp.caa_id, cmb.year
-> Sort (cost=59357920.75..59467279.78 rows=43743610 width=307)
Sort Key: r.gid, r.name, ac.name, temp.name, r.length, rrl.recording_links, (array_agg(jsonb_build_array(t.name, rt.count, g.gid))), (array_agg(jsonb_build_array(t_2.name, rgt.count, rg.gid, g_2.gid))), rg.gid, (array_agg(jsonb_build_array(a_1.gid, a_1.begin_date_year, a_1.end_date_year, at_1.name, ag_1.name, ar.name, arl.artist_links))), (array_agg(jsonb_build_array(t_1.name, at_2.count, a_3.gid, g_1.gid))), temp.release_mbid, temp.caa_id, cmb.year
-> Hash Left Join (cost=34422236.16..47526692.77 rows=43743610 width=307)
Hash Cond: (r.gid = temp.recording_mbid)
-> Hash Left Join (cost=28037635.52..40976868.83 rows=43743610 width=246)
Hash Cond: (r.gid = rrl.gid)
-> Hash Join (cost=27687999.66..40512405.96 rows=43743610 width=214)
Hash Cond: (r.artist_credit = ac.id)
-> Merge Left Join (cost=27279000.36..37354431.68 rows=38835668 width=192)
Merge Cond: (r.gid = r_5.gid)
-> Merge Left Join (cost=16852494.48..24918568.70 rows=27029478 width=144)
Merge Cond: (r.gid = cmb.recording_mbid)
-> Merge Left Join (cost=16852493.92..21631578.28 rows=27029478 width=140)
Merge Cond: (r.gid = r_4.gid)
-> Merge Left Join (cost=14170867.99..18441924.24 rows=27029478 width=108)
Merge Cond: (r.gid = r_3.gid)
-> Merge Left Join (cost=11979773.62..15910322.26 rows=27029478 width=76)
Merge Cond: (r.gid = r_1.gid)
-> Index Scan using recording_idx_gid on recording r (cost=0.56..2447550.23 rows=27029478 width=44)
-> GroupAggregate (cost=11979773.05..12787035.08 rows=27029478 width=48)
Group Key: r_1.gid
-> Sort (cost=11979773.05..12097121.44 rows=46939355 width=94)
Sort Key: r_1.gid
-> Hash Join (cost=1900051.36..3592129.78 rows=46939355 width=94)
Hash Cond: (r_1.artist_credit = ac_1.id)
-> Seq Scan on recording r_1 (cost=0.00..646983.78 rows=27029478 width=20)
-> Hash (cost=1792415.05..1792415.05 rows=4112665 width=86)
-> Hash Left Join (cost=1515728.67..1792415.05 rows=4112665 width=86)
Hash Cond: (a_1.area = ar.id)
-> Hash Left Join (cost=1511657.62..1777548.07 rows=4112665 width=79)
Hash Cond: (a_1.gender = ag_1.id)
-> Hash Join (cost=1511656.51..1762878.44 rows=4112665 width=75)
Hash Cond: (a_1.type = at_1.id)
-> Hash Left Join (cost=1511655.38..1746146.33 rows=4112665 width=72)
Hash Cond: (a_1.gid = arl.gid)
-> Hash Join (cost=198871.50..340891.69 rows=4112665 width=40)
Hash Cond: (acn_1.artist_credit = ac_1.id)
-> Hash Join (cost=92522.32..223746.74 rows=4112665 width=36)
Hash Cond: (acn_1.artist = a_1.id)
-> Seq Scan on artist_credit_name acn_1 (cost=0.00..72818.65 rows=4112665 width=8)
-> Hash (cost=52279.70..52279.70 rows=1981170 width=36)
-> Seq Scan on artist a_1 (cost=0.00..52279.70 rows=1981170 width=36)
-> Hash (cost=76746.30..76746.30 rows=2368230 width=4)
-> Seq Scan on artist_credit ac_1 (cost=0.00..76746.30 rows=2368230 width=4)
-> Hash (cost=1270606.25..1270606.25 rows=1981170 width=48)
-> Subquery Scan on arl (cost=1211117.41..1270606.25 rows=1981170 width=48)
-> GroupAggregate (cost=1211117.41..1250794.55 rows=1981170 width=48)
Group Key: a_2.gid
-> Sort (cost=1211117.41..1216088.25 rows=1988335 width=72)
Sort Key: a_2.gid
-> Gather (cost=200516.11..921552.96 rows=1988335 width=72)
Workers Planned: 2
-> Nested Loop (cost=199516.11..721719.46 rows=828473 width=72)
-> Nested Loop Left Join (cost=199515.55..334836.78 rows=72588 width=80)
-> Nested Loop (cost=199515.12..289447.79 rows=72588 width=40)
-> Hash Join (cost=199514.69..255494.71 rows=72588 width=36)
Hash Cond: (acn_2.artist = a_2.id)
-> Parallel Seq Scan on artist_credit_name acn_2 (cost=0.00..48828.10 rows=1713610 width=8)
-> Hash (cost=198465.66..198465.66 rows=83922 width=36)
-> Hash Right Join (cost=101372.24..198465.66 rows=83922 width=36)
Hash Cond: (lau.entity0 = a_2.id)
Filter: ((lt.gid = ANY ('{99429741-f3f6-484b-84f8-23af51991770,fe33d22f-c3b0-4d68-bd53-a856badf2b15,fe33d22f-c3b0-4d68-bd53-a856badf2b15,689870a4-a1e4-4912-b17f-7b2664215698,93883cf6-e818-4938-990e-75863f8db2d3,6f77d54e-1d81-4e1a-9ea5-37947577151b,e4d73442-3762-45a8-905c-401da65544ed,611b1862-67af-4253-a64f-34adba305d1d,f8319a2f-f824-4617-81c8-be6560b3b203,34ae77fe-defb-43ea-95d4-63c7540bac78,769085a1-c2f7-4c24-a532-2375a77693bd,63cc5d1f-f096-4c94-a43f-ecb32ea94161,6a540e5b-58c6-4192-b6ba-dbc71ec8fcf0}'::uuid[])) OR (lt.gid IS NULL))
-> Hash Left Join (cost=24327.92..111897.78 rows=3627999 width=36)
Hash Cond: (l.link_type = lt.id)
-> Hash Left Join (cost=24291.28..102265.82 rows=3627999 width=12)
Hash Cond: (lau.link = l.id)
-> Seq Scan on l_artist_url lau (cost=0.00..68450.99 rows=3627999 width=12)
-> Hash (cost=14548.90..14548.90 rows=779390 width=8)
-> Seq Scan on link l (cost=0.00..14548.90 rows=779390 width=8)
-> Hash (cost=29.62..29.62 rows=562 width=32)
-> Seq Scan on link_type lt (cost=0.00..29.62 rows=562 width=32)
-> Hash (cost=52279.70..52279.70 rows=1981170 width=20)
-> Seq Scan on artist a_2 (cost=0.00..52279.70 rows=1981170 width=20)
-> Index Only Scan using artist_credit_pkey on artist_credit ac_2 (cost=0.43..0.47 rows=1 width=4)
Index Cond: (id = acn_2.artist_credit)
-> Index Scan using url_pkey on url u (cost=0.43..0.63 rows=1 width=48)
Index Cond: (id = lau.entity1)
-> Index Only Scan using recording_idx_artist_credit on recording r_2 (cost=0.56..3.67 rows=166 width=4)
Index Cond: (artist_credit = ac_2.id)
-> Hash (cost=1.06..1.06 rows=6 width=11)
-> Seq Scan on artist_type at_1 (cost=0.00..1.06 rows=6 width=11)
-> Hash (cost=1.05..1.05 rows=5 width=12)
-> Seq Scan on gender ag_1 (cost=0.00..1.05 rows=5 width=12)
-> Hash (cost=2584.91..2584.91 rows=118891 width=15)
-> Seq Scan on area ar (cost=0.00..2584.91 rows=118891 width=15)
-> GroupAggregate (cost=2191094.38..2327561.33 rows=6065198 width=48)
Group Key: r_3.gid
-> Sort (cost=2191094.38..2206257.37 rows=6065198 width=50)
Sort Key: r_3.gid
-> Gather (cost=107453.84..1300476.93 rows=6065198 width=50)
Workers Planned: 2
-> Hash Left Join (cost=106453.84..692957.13 rows=2527166 width=50)
Hash Cond: ((t.name)::text = (g.name)::text)
-> Parallel Hash Join (cost=106408.38..683273.28 rows=2527166 width=34)
Hash Cond: (rt.tag = t.id)
-> Parallel Hash Join (cost=102234.81..672465.76 rows=2527166 width=24)
Hash Cond: (r_3.id = rt.recording)
-> Parallel Seq Scan on recording r_3 (cost=0.00..489311.83 rows=11262282 width=20)
-> Parallel Hash (cost=70645.23..70645.23 rows=2527166 width=12)
-> Parallel Seq Scan on recording_tag rt (cost=0.00..70645.23 rows=2527166 width=12)
Filter: (count > 0)
-> Parallel Hash (cost=2667.70..2667.70 rows=120470 width=18)
-> Parallel Seq Scan on tag t (cost=0.00..2667.70 rows=120470 width=18)
-> Hash (cost=29.09..29.09 rows=1309 width=27)
-> Seq Scan on genre g (cost=0.00..29.09 rows=1309 width=27)
-> GroupAggregate (cost=2681625.92..2901853.13 rows=9787876 width=48)
Group Key: r_4.gid
-> Sort (cost=2681625.92..2706095.61 rows=9787876 width=66)
Sort Key: r_4.gid
-> Hash Join (cost=297447.95..1143671.02 rows=9787876 width=66)
Hash Cond: (r_4.artist_credit = ac_3.id)
-> Seq Scan on recording r_4 (cost=0.00..646983.78 rows=27029478 width=20)
-> Hash (cost=286728.20..286728.20 rows=857580 width=58)
-> Gather (cost=142676.17..286728.20 rows=857580 width=58)
Workers Planned: 2
-> Parallel Hash Join (cost=141676.17..199970.20 rows=357325 width=58)
Hash Cond: (acn_3.artist_credit = ac_3.id)
-> Parallel Hash Join (cost=66410.02..123766.07 rows=357325 width=54)
Hash Cond: (acn_3.artist = a_3.id)
-> Parallel Seq Scan on artist_credit_name acn_3 (cost=0.00..48828.10 rows=1713610 width=8)
-> Parallel Hash (cost=63372.39..63372.39 rows=243010 width=58)
-> Hash Left Join (cost=55260.50..63372.39 rows=243010 width=58)
Hash Cond: ((t_1.name)::text = (g_1.name)::text)
-> Parallel Hash Join (cost=55215.05..62400.12 rows=243010 width=42)
Hash Cond: (at_2.tag = t_1.id)
-> Parallel Hash Join (cost=51041.47..57588.63 rows=243010 width=32)
Hash Cond: (at_2.artist = a_3.id)
-> Parallel Seq Scan on artist_tag at_2 (cost=0.00..5909.26 rows=243010 width=12)
Filter: (count > 0)
-> Parallel Hash (cost=40722.88..40722.88 rows=825488 width=20)
-> Parallel Seq Scan on artist a_3 (cost=0.00..40722.88 rows=825488 width=20)
-> Parallel Hash (cost=2667.70..2667.70 rows=120470 width=18)
-> Parallel Seq Scan on tag t_1 (cost=0.00..2667.70 rows=120470 width=18)
-> Hash (cost=29.09..29.09 rows=1309 width=27)
-> Seq Scan on genre g_1 (cost=0.00..29.09 rows=1309 width=27)
-> Parallel Hash (cost=62931.62..62931.62 rows=986762 width=4)
-> Parallel Seq Scan on artist_credit ac_3 (cost=0.00..62931.62 rows=986762 width=4)
-> Index Scan using canonical_musicbrainz_data_idx_recording_mbid on canonical_musicbrainz_data cmb (cost=0.56..2950239.70 rows=21534162 width=20)
-> Materialize (cost=10426505.88..11882843.43 rows=38835668 width=64)
-> GroupAggregate (cost=10426505.88..11397397.58 rows=38835668 width=64)
Group Key: r_5.gid, rg.gid
-> Sort (cost=10426505.88..10523595.05 rows=38835668 width=66)
Sort Key: r_5.gid, rg.gid
-> Hash Join (cost=1718373.51..3938228.26 rows=38835668 width=66)
Hash Cond: (crr.release_mbid = rel.gid)
-> Hash Join (cost=1034636.03..2204290.20 rows=27029478 width=32)
Hash Cond: (r_5.gid = crr.recording_mbid)
-> Seq Scan on recording r_5 (cost=0.00..646983.78 rows=27029478 width=16)
-> Hash (cost=503549.68..503549.68 rows=27466268 width=32)
-> Seq Scan on canonical_release_redirect crr (cost=0.00..503549.68 rows=27466268 width=32)
-> Hash (cost=568434.82..568434.82 rows=4760853 width=66)
-> Hash Left Join (cost=312537.42..568434.82 rows=4760853 width=66)
Hash Cond: ((t_2.name)::text = (g_2.name)::text)
-> Hash Join (cost=312491.97..550231.87 rows=4760853 width=50)
Hash Cond: (rgt.tag = t_2.id)
-> Hash Join (cost=306420.99..531663.40 rows=4760853 width=40)
Hash Cond: (rel.release_group = rg.id)
-> Seq Scan on release rel (cost=0.00..88914.36 rows=3313536 width=20)
-> Hash (cost=235605.79..235605.79 rows=3662336 width=32)
-> Hash Join (cost=104828.87..235605.79 rows=3662336 width=32)
Hash Cond: (rgt.release_group = rg.id)
-> Seq Scan on release_group_tag rgt (cost=0.00..70461.27 rows=3662336 width=12)
Filter: (count > 0)
-> Hash (cost=58030.72..58030.72 rows=2548972 width=20)
-> Seq Scan on release_group rg (cost=0.00..58030.72 rows=2548972 width=20)
-> Hash (cost=3510.99..3510.99 rows=204799 width=18)
-> Seq Scan on tag t_2 (cost=0.00..3510.99 rows=204799 width=18)
-> Hash (cost=29.09..29.09 rows=1309 width=27)
-> Seq Scan on genre g_2 (cost=0.00..29.09 rows=1309 width=27)
-> Hash (cost=354815.30..354815.30 rows=2667520 width=34)
-> Hash Join (cost=199585.75..354815.30 rows=2667520 width=34)
Hash Cond: (acn.artist_credit = ac.id)
-> Hash Join (cost=77046.57..188243.87 rows=2667520 width=4)
Hash Cond: (a.type = at.id)
-> Hash Join (cost=77045.44..177390.83 rows=2667520 width=12)
Hash Cond: (a.type = ag.id)
-> Hash Join (cost=77044.32..160658.74 rows=4112665 width=8)
Hash Cond: (acn.artist = a.id)
-> Seq Scan on artist_credit_name acn (cost=0.00..72818.65 rows=4112665 width=8)
-> Hash (cost=52279.70..52279.70 rows=1981170 width=8)
-> Seq Scan on artist a (cost=0.00..52279.70 rows=1981170 width=8)
-> Hash (cost=1.05..1.05 rows=5 width=4)
-> Seq Scan on gender ag (cost=0.00..1.05 rows=5 width=4)
-> Hash (cost=1.06..1.06 rows=6 width=4)
-> Seq Scan on artist_type at (cost=0.00..1.06 rows=6 width=4)
-> Hash (cost=76746.30..76746.30 rows=2368230 width=30)
-> Seq Scan on artist_credit ac (cost=0.00..76746.30 rows=2368230 width=30)
-> Hash (cost=347179.92..347179.92 rows=196476 width=48)
-> Subquery Scan on rrl (cost=340303.26..347179.92 rows=196476 width=48)
-> GroupAggregate (cost=340303.26..345215.16 rows=196476 width=48)
Group Key: r_6.gid
-> Sort (cost=340303.26..340794.45 rows=196476 width=67)
Sort Key: r_6.gid
-> Gather (cost=24367.54..323029.09 rows=196476 width=67)
Workers Planned: 2
-> Hash Left Join (cost=23367.54..302381.49 rows=81865 width=67)
Hash Cond: (la.attribute_type = lat.id)
-> Parallel Hash Left Join (cost=23316.73..302114.96 rows=81865 width=61)
Hash Cond: (l_1.id = la.link)
-> Nested Loop (cost=14099.29..290375.13 rows=81865 width=61)
-> Nested Loop (cost=14098.87..252925.87 rows=81865 width=36)
-> Hash Left Join (cost=14098.43..203275.29 rows=81865 width=24)
Hash Cond: (l_1.link_type = lt_1.id)
Filter: ((lt_1.gid = ANY ('{628a9658-f54c-4142-b0c0-95f031b544da,59054b12-01ac-43ee-a618-285fd397e461,0fdbe3c6-7700-4a31-ae54-b53f06ae1cfa,234670ce-5f22-4fd0-921b-ef1662695c5d,3b6616c5-88ba-4341-b4ee-81ce1e6d7ebb,92777657-504c-4acb-bd33-51a201bd57e1,45d0cbc5-d65b-4e77-bdfd-8a75207cb5c5,7e41ef12-a124-4324-afdb-fdbae687a89c,b5f3058a-666c-406f-aafb-f9249fc7b122}'::uuid[])) OR (lt_1.gid IS NULL))
-> Parallel Hash Left Join (cost=14061.78..189616.08 rows=5112017 width=16)
Hash Cond: (lar.link = l_1.id)
-> Parallel Seq Scan on l_artist_recording lar (cost=0.00..162135.17 rows=5112017 width=12)
-> Parallel Hash (cost=10002.46..10002.46 rows=324746 width=8)
-> Parallel Seq Scan on link l_1 (cost=0.00..10002.46 rows=324746 width=8)
-> Hash (cost=29.62..29.62 rows=562 width=32)
-> Seq Scan on link_type lt_1 (cost=0.00..29.62 rows=562 width=32)
-> Index Scan using recording_pkey on recording r_6 (cost=0.44..0.61 rows=1 width=20)
Index Cond: (id = lar.entity1)
-> Index Scan using artist_pkey on artist a1 (cost=0.43..0.46 rows=1 width=33)
Index Cond: (id = lar.entity0)
-> Parallel Hash (cost=5991.08..5991.08 rows=258108 width=8)
-> Parallel Seq Scan on link_attribute la (cost=0.00..5991.08 rows=258108 width=8)
-> Hash (cost=37.03..37.03 rows=1103 width=14)
-> Seq Scan on link_attribute_type lat (cost=0.00..37.03 rows=1103 width=14)
-> Hash (cost=6383685.53..6383685.53 rows=73208 width=77)
-> Subquery Scan on temp (cost=5834627.45..6383685.53 rows=73208 width=77)
Filter: (temp.rownum = 1)
-> WindowAgg (cost=5834627.45..6200666.17 rows=14641549 width=109)
-> Sort (cost=5834627.45..5871231.32 rows=14641549 width=81)
Sort Key: crr_1.recording_mbid, caa.ordering
-> Gather (cost=1096025.82..3391399.14 rows=14641549 width=81)
Workers Planned: 2
-> Parallel Hash Left Join (cost=1095025.82..1926244.24 rows=6100645 width=81)
Hash Cond: (crr_1.release_mbid = rel_1.gid)
Filter: ((cat.type_id = 1) OR (cat.type_id IS NULL))
-> Parallel Hash Left Join (cost=564616.26..1271708.57 rows=11262282 width=48)
Hash Cond: (r_7.gid = crr_1.recording_mbid)
-> Parallel Seq Scan on recording r_7 (cost=0.00..489311.83 rows=11262282 width=16)
-> Parallel Hash (cost=343329.78..343329.78 rows=11444278 width=32)
-> Parallel Seq Scan on canonical_release_redirect crr_1 (cost=0.00..343329.78 rows=11444278 width=32)
-> Parallel Hash (cost=510457.43..510457.43 rows=1596170 width=53)
-> Parallel Hash Left Join (cost=58128.68..510457.43 rows=1596170 width=53)
Hash Cond: (caa.id = cat.id)
-> Merge Left Join (cost=0.86..438018.21 rows=1532138 width=49)
Merge Cond: (rel_1.id = caa.release)
-> Parallel Index Scan using release_pkey on release rel_1 (cost=0.43..173795.62 rows=1380640 width=41)
-> Index Scan using cover_art_idx_release on cover_art caa (cost=0.43..236939.67 rows=3677131 width=16)
-> Parallel Hash (cost=38175.70..38175.70 rows=1596170 width=12)
-> Parallel Seq Scan on cover_art_type cat (cost=0.00..38175.70 rows=1596170 width=12)
JIT:
Functions: 428
Options: Inlining true, Optimization true, Expressions true, Deforming true
WITH artist_rels AS (
SELECT a.gid
, array_agg(distinct(ARRAY[lt.name, url])) AS artist_links
FROM recording r
JOIN artist_credit ac
ON r.artist_credit = ac.id
JOIN artist_credit_name acn
ON acn.artist_credit = ac.id
JOIN artist a
ON acn.artist = a.id
LEFT JOIN l_artist_url lau
ON lau.entity0 = a.id
LEFT JOIN url u
ON lau.entity1 = u.id
LEFT JOIN link l
ON lau.link = l.id
LEFT JOIN link_type lt
ON l.link_type = lt.id
WHERE (lt.gid IN ('99429741-f3f6-484b-84f8-23af51991770'
,'fe33d22f-c3b0-4d68-bd53-a856badf2b15'
,'fe33d22f-c3b0-4d68-bd53-a856badf2b15'
,'689870a4-a1e4-4912-b17f-7b2664215698'
,'93883cf6-e818-4938-990e-75863f8db2d3'
,'6f77d54e-1d81-4e1a-9ea5-37947577151b'
,'e4d73442-3762-45a8-905c-401da65544ed'
,'611b1862-67af-4253-a64f-34adba305d1d'
,'f8319a2f-f824-4617-81c8-be6560b3b203'
,'34ae77fe-defb-43ea-95d4-63c7540bac78'
,'769085a1-c2f7-4c24-a532-2375a77693bd'
,'63cc5d1f-f096-4c94-a43f-ecb32ea94161'
,'6a540e5b-58c6-4192-b6ba-dbc71ec8fcf0')
OR lt.gid IS NULL)
GROUP BY a.gid
), recording_rels AS (
SELECT r.gid
, array_agg(ARRAY[lt.name, a1.name, a1.gid::TEXT, lat.name]) AS recording_links
FROM recording r
LEFT JOIN l_artist_recording lar
ON lar.entity1 = r.id
JOIN artist a1
ON lar.entity0 = a1.id
LEFT JOIN link l
ON lar.link = l.id
LEFT JOIN link_type lt
ON l.link_type = lt.id
LEFT JOIN link_attribute la
ON la.link = l.id
LEFT JOIN link_attribute_type lat
ON la.attribute_type = lat.id
WHERE (lt.gid IN ('628a9658-f54c-4142-b0c0-95f031b544da'
,'59054b12-01ac-43ee-a618-285fd397e461'
,'0fdbe3c6-7700-4a31-ae54-b53f06ae1cfa'
,'234670ce-5f22-4fd0-921b-ef1662695c5d'
,'3b6616c5-88ba-4341-b4ee-81ce1e6d7ebb'
,'92777657-504c-4acb-bd33-51a201bd57e1'
,'45d0cbc5-d65b-4e77-bdfd-8a75207cb5c5'
,'7e41ef12-a124-4324-afdb-fdbae687a89c'
,'b5f3058a-666c-406f-aafb-f9249fc7b122')
OR lt.gid IS NULL)
GROUP BY r.gid
), artist_data AS (
SELECT r.gid
, array_agg(jsonb_build_array(a.gid
,a.begin_date_year
,a.end_date_year
,at.name
,ag.name
,ar.name
,artist_links)) AS artist_data
FROM recording r
JOIN artist_credit ac
ON r.artist_credit = ac.id
JOIN artist_credit_name acn
ON acn.artist_credit = ac.id
JOIN artist a
ON acn.artist = a.id
JOIN artist_type at
ON a.type = at.id
LEFT JOIN gender ag
ON a.gender = ag.id
LEFT JOIN area ar
ON a.area = ar.id
LEFT JOIN artist_rels arl
ON arl.gid = a.gid
GROUP BY r.gid
), recording_tags AS (
SELECT r.gid AS recording_mbid
, array_agg(jsonb_build_array(t.name, count, g.gid)) AS recording_tags
FROM musicbrainz.tag t
JOIN recording_tag rt
ON rt.tag = t.id
JOIN recording r
ON rt.recording = r.id
LEFT JOIN genre g
ON t.name = g.name
WHERE count > 0
GROUP BY r.gid
), artist_tags AS (
SELECT r.gid AS recording_mbid
, array_agg(jsonb_build_array(t.name, count, a.gid, g.gid)) AS artist_tags
FROM recording r
JOIN artist_credit ac
ON r.artist_credit = ac.id
JOIN artist_credit_name acn
ON acn.artist_credit = ac.id
JOIN artist a
ON acn.artist = a.id
JOIN artist_tag at
ON at.artist = a.id
JOIN tag t
ON at.tag = t.id
LEFT JOIN genre g
ON t.name = g.name
] WHERE count > 0
GROUP BY r.gid
), release_group_tags AS (
SELECT r.gid AS recording_mbid
, rg.gid AS release_group_mbid
, array_agg(jsonb_build_array(t.name, count, rg.gid, g.gid)) AS release_group_tags
FROM recording r
LEFT JOIN mapping.canonical_release_redirect crr
ON r.gid = crr.recording_mbid
LEFT JOIN release rel
ON crr.release_mbid = rel.gid
JOIN release_group rg
ON rel.release_group = rg.id
JOIN release_group_tag rgt
ON rgt.release_group = rel.release_group
JOIN tag t
ON rgt.tag = t.id
LEFT JOIN genre g
ON t.name = g.name
WHERE count > 0
GROUP BY r.gid, rg.gid
), release_data AS (
SELECT * FROM (
SELECT r.gid AS recording_mbid
, rel.name
, rel.release_group
, crr.release_mbid::TEXT
, caa.id AS caa_id
, row_number() OVER (partition by recording_mbid ORDER BY ordering) AS rownum
FROM recording r
LEFT JOIN mapping.canonical_release_redirect crr
ON r.gid = crr.recording_mbid
LEFT JOIN release rel
ON crr.release_mbid = rel.gid
LEFT JOIN cover_art_archive.cover_art caa
ON caa.release = rel.id
LEFT JOIN cover_art_archive.cover_art_type cat
ON cat.id = caa.id
WHERE type_id = 1
OR type_id IS NULL
) temp where rownum=1
)
SELECT recording_links
, r.name AS recording_name
, ac.name AS artist_credit_name
, artist_data
, artist_tags
, recording_tags
, rd.name AS release_name
, release_group_tags
, release_group_mbid::TEXT
, r.length
, r.gid::TEXT AS recording_mbid
, rd.release_mbid::TEXT
, rd.caa_id
, year
FROM recording r
JOIN artist_credit ac
ON r.artist_credit = ac.id
JOIN artist_credit_name acn
ON acn.artist_credit = ac.id
JOIN artist a
ON acn.artist = a.id
JOIN artist_type at
ON a.type = at.id
JOIN gender ag
ON a.type = ag.id
LEFT JOIN artist_data ard
ON ard.gid = r.gid
LEFT JOIN recording_rels rrl
ON rrl.gid = r.gid
LEFT JOIN recording_tags rt
ON rt.recording_mbid = r.gid
LEFT JOIN artist_tags ats
ON ats.recording_mbid = r.gid
LEFT JOIN release_group_tags rts
ON rts.recording_mbid = r.gid
LEFT JOIN release_data rd
ON rd.recording_mbid = r.gid
LEFT JOIN mapping.canonical_musicbrainz_data cmb
ON cmb.recording_mbid = r.gid
GROUP BY r.gid
, r.name
, ac.name
, rd.name
, r.length
, recording_links
, recording_tags
, release_group_tags
, release_group_mbid
, artist_data
, artist_tags
, rd.release_mbid
, caa_id
, year;
Table | Count | Time | |
---|---|---|---|
recording | 8 | N/A | - |
#159 Seq Scan | N/A | - | |
#146 Index Scan | N/A | - | |
#99 Seq Scan | N/A | - | |
#74 Seq Scan | N/A | - | |
#64 Seq Scan | N/A | - | |
#51 Index Only Scan | N/A | - | |
#15 Seq Scan | N/A | - | |
#11 Index Scan | N/A | - | |
artist_credit_name | 4 | N/A | - |
#121 Seq Scan | N/A | - | |
#79 Seq Scan | N/A | - | |
#37 Seq Scan | N/A | - | |
#23 Seq Scan | N/A | - | |
artist | 5 | N/A | - |
#147 Index Scan | N/A | - | |
#123 Seq Scan | N/A | - | |
#86 Seq Scan | N/A | - | |
#48 Seq Scan | N/A | - | |
#25 Seq Scan | N/A | - | |
artist_credit | 4 | N/A | - |
#129 Seq Scan | N/A | - | |
#92 Seq Scan | N/A | - | |
#49 Index Only Scan | N/A | - | |
#27 Seq Scan | N/A | - | |
l_artist_url | 1 | N/A | - |
#42 Seq Scan | N/A | - | |
link | 2 | N/A | - |
#143 Seq Scan | N/A | - | |
#44 Seq Scan | N/A | - | |
link_type | 2 | N/A | - |
#145 Seq Scan | N/A | - | |
#46 Seq Scan | N/A | - | |
url | 1 | N/A | - |
#50 Index Scan | N/A | - | |
artist_type | 2 | N/A | - |
#127 Seq Scan | N/A | - | |
#53 Seq Scan | N/A | - | |
gender | 2 | N/A | - |
#125 Seq Scan | N/A | - | |
#55 Seq Scan | N/A | - | |
area | 1 | N/A | - |
#57 Seq Scan | N/A | - | |
recording_tag | 1 | N/A | - |
#66 Seq Scan | N/A | - | |
tag | 3 | N/A | - |
#113 Seq Scan | N/A | - | |
#88 Seq Scan | N/A | - | |
#68 Seq Scan | N/A | - | |
genre | 3 | N/A | - |
#115 Seq Scan | N/A | - | |
#90 Seq Scan | N/A | - | |
#70 Seq Scan | N/A | - | |
artist_tag | 1 | N/A | - |
#84 Seq Scan | N/A | - | |
canonical_musicbrainz_data | 1 | N/A | - |
#93 Index Scan | N/A | - | |
canonical_release_redirect | 2 | N/A | - |
#161 Seq Scan | N/A | - | |
#101 Seq Scan | N/A | - | |
release | 2 | N/A | - |
#165 Index Scan | N/A | - | |
#106 Seq Scan | N/A | - | |
release_group_tag | 1 | N/A | - |
#109 Seq Scan | N/A | - | |
release_group | 1 | N/A | - |
#111 Seq Scan | N/A | - | |
l_artist_recording | 1 | N/A | - |
#141 Seq Scan | N/A | - | |
link_attribute | 1 | N/A | - |
#149 Seq Scan | N/A | - | |
link_attribute_type | 1 | N/A | - |
#151 Seq Scan | N/A | - | |
cover_art | 1 | N/A | - |
#166 Index Scan | N/A | - | |
cover_art_type | 1 | N/A | - |
#168 Seq Scan | N/A | - |
Node Type | Count | Time | |
---|---|---|---|
Group | 1 | N/A | - |
#1 Group | N/A | - | |
Sort | 8 | N/A | - |
#155 Sort | N/A | - | |
#133 Sort | N/A | - | |
#96 Sort | N/A | - | |
#72 Sort | N/A | - | |
#59 Sort | N/A | - | |
#31 Sort | N/A | - | |
#13 Sort | N/A | - | |
#2 Sort | N/A | - | |
Hash Join | 40 | N/A | - |
#163 Hash Join | N/A | - | |
#158 Hash Join | N/A | - | |
#157 Hash Join | N/A | - | |
#140 Hash Join | N/A | - | |
#139 Hash Join | N/A | - | |
#136 Hash Join | N/A | - | |
#135 Hash Join | N/A | - | |
#120 Hash Join | N/A | - | |
#119 Hash Join | N/A | - | |
#118 Hash Join | N/A | - | |
#117 Hash Join | N/A | - | |
#108 Hash Join | N/A | - | |
#105 Hash Join | N/A | - | |
#104 Hash Join | N/A | - | |
#103 Hash Join | N/A | - | |
#98 Hash Join | N/A | - | |
#97 Hash Join | N/A | - | |
#83 Hash Join | N/A | - | |
#82 Hash Join | N/A | - | |
#81 Hash Join | N/A | - | |
#78 Hash Join | N/A | - | |
#77 Hash Join | N/A | - | |
#73 Hash Join | N/A | - | |
#63 Hash Join | N/A | - | |
#62 Hash Join | N/A | - | |
#61 Hash Join | N/A | - | |
#41 Hash Join | N/A | - | |
#40 Hash Join | N/A | - | |
#39 Hash Join | N/A | - | |
#36 Hash Join | N/A | - | |
#22 Hash Join | N/A | - | |
#21 Hash Join | N/A | - | |
#20 Hash Join | N/A | - | |
#19 Hash Join | N/A | - | |
#18 Hash Join | N/A | - | |
#17 Hash Join | N/A | - | |
#14 Hash Join | N/A | - | |
#5 Hash Join | N/A | - | |
#4 Hash Join | N/A | - | |
#3 Hash Join | N/A | - | |
Merge Join | 6 | N/A | - |
#164 Merge Join | N/A | - | |
#10 Merge Join | N/A | - | |
#9 Merge Join | N/A | - | |
#8 Merge Join | N/A | - | |
#7 Merge Join | N/A | - | |
#6 Merge Join | N/A | - | |
Index Scan | 7 | N/A | - |
#166 Index Scan | N/A | - | |
#165 Index Scan | N/A | - | |
#147 Index Scan | N/A | - | |
#146 Index Scan | N/A | - | |
#93 Index Scan | N/A | - | |
#50 Index Scan | N/A | - | |
#11 Index Scan | N/A | - | |
GroupAggregate | 6 | N/A | - |
#132 GroupAggregate | N/A | - | |
#95 GroupAggregate | N/A | - | |
#71 GroupAggregate | N/A | - | |
#58 GroupAggregate | N/A | - | |
#30 GroupAggregate | N/A | - | |
#12 GroupAggregate | N/A | - | |
Seq Scan | 43 | N/A | - |
#168 Seq Scan | N/A | - | |
#161 Seq Scan | N/A | - | |
#159 Seq Scan | N/A | - | |
#151 Seq Scan | N/A | - | |
#149 Seq Scan | N/A | - | |
#145 Seq Scan | N/A | - | |
#143 Seq Scan | N/A | - | |
#141 Seq Scan | N/A | - | |
#129 Seq Scan | N/A | - | |
#127 Seq Scan | N/A | - | |
#125 Seq Scan | N/A | - | |
#123 Seq Scan | N/A | - | |
#121 Seq Scan | N/A | - | |
#115 Seq Scan | N/A | - | |
#113 Seq Scan | N/A | - | |
#111 Seq Scan | N/A | - | |
#109 Seq Scan | N/A | - | |
#106 Seq Scan | N/A | - | |
#101 Seq Scan | N/A | - | |
#99 Seq Scan | N/A | - | |
#92 Seq Scan | N/A | - | |
#90 Seq Scan | N/A | - | |
#88 Seq Scan | N/A | - | |
#86 Seq Scan | N/A | - | |
#84 Seq Scan | N/A | - | |
#79 Seq Scan | N/A | - | |
#74 Seq Scan | N/A | - | |
#70 Seq Scan | N/A | - | |
#68 Seq Scan | N/A | - | |
#66 Seq Scan | N/A | - | |
#64 Seq Scan | N/A | - | |
#57 Seq Scan | N/A | - | |
#55 Seq Scan | N/A | - | |
#53 Seq Scan | N/A | - | |
#48 Seq Scan | N/A | - | |
#46 Seq Scan | N/A | - | |
#44 Seq Scan | N/A | - | |
#42 Seq Scan | N/A | - | |
#37 Seq Scan | N/A | - | |
#27 Seq Scan | N/A | - | |
#25 Seq Scan | N/A | - | |
#23 Seq Scan | N/A | - | |
#15 Seq Scan | N/A | - | |
Hash | 40 | N/A | - |
#167 Hash | N/A | - | |
#162 Hash | N/A | - | |
#160 Hash | N/A | - | |
#152 Hash | N/A | - | |
#150 Hash | N/A | - | |
#148 Hash | N/A | - | |
#144 Hash | N/A | - | |
#142 Hash | N/A | - | |
#130 Hash | N/A | - | |
#128 Hash | N/A | - | |
#126 Hash | N/A | - | |
#124 Hash | N/A | - | |
#122 Hash | N/A | - | |
#116 Hash | N/A | - | |
#114 Hash | N/A | - | |
#112 Hash | N/A | - | |
#110 Hash | N/A | - | |
#107 Hash | N/A | - | |
#102 Hash | N/A | - | |
#100 Hash | N/A | - | |
#91 Hash | N/A | - | |
#89 Hash | N/A | - | |
#87 Hash | N/A | - | |
#85 Hash | N/A | - | |
#80 Hash | N/A | - | |
#75 Hash | N/A | - | |
#69 Hash | N/A | - | |
#67 Hash | N/A | - | |
#65 Hash | N/A | - | |
#56 Hash | N/A | - | |
#54 Hash | N/A | - | |
#52 Hash | N/A | - | |
#47 Hash | N/A | - | |
#45 Hash | N/A | - | |
#43 Hash | N/A | - | |
#38 Hash | N/A | - | |
#28 Hash | N/A | - | |
#26 Hash | N/A | - | |
#24 Hash | N/A | - | |
#16 Hash | N/A | - | |
Subquery Scan | 3 | N/A | - |
#153 Subquery Scan | N/A | - | |
#131 Subquery Scan | N/A | - | |
#29 Subquery Scan | N/A | - | |
Gather | 5 | N/A | - |
#156 Gather | N/A | - | |
#134 Gather | N/A | - | |
#76 Gather | N/A | - | |
#60 Gather | N/A | - | |
#32 Gather | N/A | - | |
Nested Loop | 4 | N/A | - |
#138 Nested Loop | N/A | - | |
#137 Nested Loop | N/A | - | |
#35 Nested Loop | N/A | - | |
#33 Nested Loop | N/A | - | |
Nested Loop Join | 1 | N/A | - |
#34 Nested Loop Join | N/A | - | |
Index Only Scan | 2 | N/A | - |
#51 Index Only Scan | N/A | - | |
#49 Index Only Scan | N/A | - | |
Materialize | 1 | N/A | - |
#94 Materialize | N/A | - | |
WindowAgg | 1 | N/A | - |
#154 WindowAgg | N/A | - |
Index | Count | Time | |
---|---|---|---|
recording_idx_gid | 1 | N/A | - |
#11 Index Scan | N/A | - | |
artist_credit_pkey | 1 | N/A | - |
#49 Index Only Scan | N/A | - | |
url_pkey | 1 | N/A | - |
#50 Index Scan | N/A | - | |
recording_idx_artist_credit | 1 | N/A | - |
#51 Index Only Scan | N/A | - | |
canonical_musicbrainz_data_idx_recording_mbid | 1 | N/A | - |
#93 Index Scan | N/A | - | |
recording_pkey | 1 | N/A | - |
#146 Index Scan | N/A | - | |
artist_pkey | 1 | N/A | - |
#147 Index Scan | N/A | - | |
release_pkey | 1 | N/A | - |
#165 Index Scan | N/A | - | |
cover_art_idx_release | 1 | N/A | - |
#166 Index Scan | N/A | - |