LIME пишет:
вспомнить что в мскл JOIN это nested loop и поле участвует в фильтре, то становится ожидаемо что сначала произойдет выборка по индексу в нужном направлении и лишь потом произойдет внутренние циклы JOINов
Это если не вспоминать про дурацкий планировщик. Который увидит сортировку и пойдёт отсортированное множество сортировать ещё раз.
Так-то да, никаких проблем читать индекс и nested loop'ом джойнить попутно данные и сразу их выдавать клиенту минуя сортировку.
Так умеет планировщик postgresql, а вот mysql мне так помнится не умеет. Зато mysql умеет loose index scan