Trong truy vấn đầu tiên, mysql nên chọn một tập hợp con từ mdl_enrol
bảng và hoàn thành mdl_user_enrolments
và mdl_userdata
vào bộ nhớ. Vì vậy, bạn chọn nhiều dữ liệu trong bộ nhớ. Sau khi bạn đã làm điều đó - bạn kết hợp dữ liệu. Nếu không có đủ bộ nhớ để đặt tất cả dữ liệu cho đến khi nó được kết hợp và gửi trở lại máy khách - thì bảng tạm thời trên ổ cứng sẽ được tạo. Nhiều khả năng trình tối ưu hóa mysql không đủ mát để sửa lỗi của bạn và cố gắng cải thiện kế hoạch thực thi. Đó là lý do tại sao nó chậm.
Trong khi đó đối với truy vấn thứ hai, mysql biết chính xác nó cần chọn những gì và chỉ chọn một lượng nhỏ dữ liệu cần thiết. Trong trường hợp này, có thể sử dụng các chỉ mục (giả sử tất cả các chỉ mục cần thiết đã được tạo). Vì vậy, nó nhanh chóng.