Nella prima query mysql dovrebbe selezionare un sottoinsieme da mdl_enrol
tabella e completa mdl_user_enrolments
e mdl_userdata
nella memoria. Quindi selezioni molti dati in memoria. Dopo averlo fatto, unisci i dati. Se non c'è memoria sufficiente per inserire tutti i dati fino a quando non vengono uniti e rispediti al client, viene creata una tabella temporanea sul disco rigido. Molto probabilmente l'ottimizzatore mysql non è abbastanza interessante per correggere il tuo errore e provare a migliorare il piano di esecuzione. Ecco perché è lento.
Mentre per la seconda query mysql sa esattamente cosa deve selezionare e seleziona solo la piccola quantità di dati richiesti. In questo scenario è possibile utilizzare gli indici (supponendo che siano stati creati tutti gli indici necessari). Quindi è veloce.