Unique (cost=50607.57..51621.47 rows=7700 width=32) -> Gather Merge (cost=50607.57..51544.47 rows=7700 width=32) Workers Planned: 2 -> Unique (cost=49607.55..49655.68 rows=3850 width=32) -> Sort (cost=49607.55..49617.18 rows=3850 width=32) Sort Key: c.id, cr.id, ra.userid, mc.timemodified -> Parallel Hash Right Join (cost=41485.21..49378.27 rows=3850 width=32) Hash Cond: ((cc.criteriaid = cr.id) AND (cc.userid = ra.userid)) -> Parallel Seq Scan on mdl_course_completion_crit_compl cc (cost=0.00..6316.57 rows=210157 width=16) -> Parallel Hash (cost=41427.46..41427.46 rows=3850 width=32) -> Hash Join (cost=11477.83..41427.46 rows=3850 width=32) Hash Cond: (cr.moduleinstance = cm.id) -> Parallel Hash Join (cost=11282.58..41221.50 rows=4078 width=48) Hash Cond: ((cr.moduleinstance = mc.coursemoduleid) AND (ra.userid = mc.userid)) -> Hash Join (cost=518.54..25224.46 rows=211236 width=32) Hash Cond: (ra.contextid = con.id) -> Parallel Seq Scan on mdl_role_assignments ra (cost=0.00..20763.14 rows=488114 width=16) -> Hash (cost=448.79..448.79 rows=5580 width=32) -> Hash Join (cost=292.54..448.79 rows=5580 width=32) Hash Cond: (cr.course = c.id) -> Seq Scan on mdl_course_completion_criteria cr (cost=0.00..84.48 rows=4248 width=24) -> Hash (cost=273.36..273.36 rows=1534 width=24) -> Merge Join (cost=0.63..273.36 rows=1534 width=24) Merge Cond: (c.id = con.instanceid) -> Index Only Scan using mdl_cour_id_pk on mdl_course c (cost=0.28..101.78 rows=1167 width=8) -> Index Scan using mdl_cont_ins_ix on mdl_context con (cost=0.29..885.41 rows=12894 width=16) -> Parallel Hash (cost=6365.42..6365.42 rows=210842 width=24) -> Parallel Seq Scan on mdl_course_modules_completion mc (cost=0.00..6365.42 rows=210842 width=24) -> Hash (cost=139.00..139.00 rows=4500 width=8) -> Seq Scan on mdl_course_modules cm (cost=0.00..139.00 rows=4500 width=8)