В общем случае, чтобы вернуть строки для LIMIT M, N
MySQL должен будет сканировать M + N строк результата без LIMIT
и пропустить первые M-1 из них, следовательно, полное сканирование таблицы.
Первые 20 строк в вашем случае, похоже, помещаются на одной странице, и, поскольку вы упорядочиваете по первичному ключу, MySQL, вероятно, понимает, что не нужно будет выполнять полное сканирование таблицы.
Еще одна вещь, которую следует знать, MySQL обычно не использует индексы для запросов, таких как SELECT * FROM T ORDER BY something
, индексы обычно используются, когда есть условие, или если все данные могут быть получены из индекса напрямую (покрывая индексы).