Dalam kueri pertama, mysql harus memilih subset dari mdl_enrol
tabel dan selesai mdl_user_enrolments
dan mdl_userdata
ke dalam memori. Jadi Anda memilih banyak data di memori. Setelah Anda selesai melakukannya - Anda bergabung dengan data. Jika tidak ada cukup memori untuk meletakkan semua data sampai digabungkan dan dikirim kembali ke klien - maka tabel sementara pada hard drive dibuat. Kemungkinan besar pengoptimal mysql tidak cukup keren untuk memperbaiki kesalahan Anda dan mencoba meningkatkan rencana eksekusi. Itu sebabnya lambat.
Sedangkan untuk query kedua mysql tahu persis apa yang perlu dipilih dan hanya memilih sejumlah kecil data yang diperlukan. Dalam skenario ini dimungkinkan untuk menggunakan indeks (dengan asumsi semua indeks yang diperlukan telah dibuat). Jadi cepat.