mirror of
https://github.com/moodle/moodle.git
synced 2025-08-06 01:16:44 +02:00
![]() This is an extremely dangerous query, because it includes the user table twice, along-side two other potentially large tables, role_assignments and user_enrolments. The solution is to rewrite the query so that: 1. The subquery is JOINed, not WHERE ... INed. Typically query optimisers handle the JOIN case better. 2. Before the join was role-assignments <-> users <-> subquery. That is, everything was linked to u.id. Now the linking is role-assignments <-> subquery <-> users, so the SELECT DISTINT eu1_u.id FROM {enrolled users} is central. That seems to send a strong hint to the query optimiser about a good order to execute the query. |
||
---|---|---|
.. | ||
classes | ||
tests | ||
admins.php | ||
allow.php | ||
assign.php | ||
check.php | ||
define.php | ||
lib.php | ||
manage.php | ||
managetabs.php | ||
module.js | ||
override.php | ||
permissions.php | ||
role_schema.xml | ||
usersroles.php |