MySQL не может перейти непосредственно к 10000-й записи (или 80000-му байту, как вы предлагаете), потому что он не может предположить, что он упакован / упорядочен таким образом (или что он имеет непрерывные значения от 1 до 10000). Хотя в действительности это может быть так, MySQL не может предположить, что нет дыр / пробелов / удаленных идентификаторов.
Итак, как заметил Бобс, MySQL должен будет извлечь 10000 строк (или пройти 10000-ые записи индекса на id
), прежде чем найти 30 для возврата.
РЕДАКТИРОВАТЬ : чтобы проиллюстрировать мою точку зрения
Обратите внимание, что хотя
SELECT * FROM large ORDER BY id LIMIT 10000, 30
будет медленным (er) ,
SELECT * FROM large WHERE id > 10000 ORDER BY id LIMIT 30
будет быстрым (er) и будет возвращать те же результаты при условии отсутствия пропущенных id
с (то есть пробелов).