Optymalizator MySQL najpierw zdecyduje o kolejności/metodzie złączenia, a następnie sprawdzi, czy dla wybranej kolejności złączenia można uniknąć sortowania za pomocą indeksu. W przypadku powolnego zapytania w tym pytaniu optymalizator zdecydował się na użycie złączenia Block-Nested-Loop (BNL).
BNL jest zwykle szybsze niż użycie indeksu, gdy jedna z tabel jest bardzo mała (i nie ma limitu).
Jednak w przypadku BNL wiersze niekoniecznie będą pojawiać się w kolejności podanej w pierwszej tabeli. Dlatego wynik łączenia musi zostać posortowany przed zastosowaniem LIMITu.
Możesz wyłączyć BNL, set optimizer_switch = 'block_nested_loop=off';