Почему более высокое смещение LIMIT в MYSQL замедляет выполнение запроса?

Вкратце сценарий: таблица с более чем 16 миллионами записей [размером 2 ГБ]. Чем выше LIMIT смещение с помощью SELECT, тем медленнее становится запрос при использовании ORDER BY * primary_key *

Таким образом,

SELECT * FROM large ORDER BY `id`  LIMIT 0, 30 

занимает гораздо меньше, чем

SELECT * FROM large ORDER BY `id` LIMIT 10000, 30 

, который упорядочивает только 30 записей и в любом случае то же самое. Так что это не накладные расходы ORDER BY.
Чем выше LIMIT смещение с помощью SELECT, тем медленнее становится запрос при использовании ORDER BY * primary_key * So SELECT * ...

Вкратце сценарий: таблица с более чем 16 миллионами записей [размер 2 ГБ]. Чем выше LIMIT смещение с помощью SELECT, тем медленнее становится запрос при использовании ORDER BY * primary_key *

Таким образом,

SELECT * FROM large ORDER BY `id`  LIMIT 0, 30 

занимает гораздо меньше, чем

SELECT * FROM large ORDER BY `id` LIMIT 10000, 30 

, который упорядочивает только 30 записей и в любом случае то же самое. Так что это не накладные расходы ORDER BY.
Чем выше LIMIT смещение с помощью SELECT, тем медленнее становится запрос при использовании ORDER BY * primary_key * So SELECT * ...

Вкратце сценарий: таблица с более чем 16 миллионами записей [размер 2 ГБ]. Чем выше LIMIT смещение с помощью SELECT, тем медленнее становится запрос при использовании ORDER BY * primary_key *

Таким образом,

SELECT * FROM large ORDER BY `id`  LIMIT 0, 30 

занимает намного меньше, чем

SELECT * FROM large ORDER BY `id` LIMIT 10000, 30 

, который упорядочивает только 30 записей и в любом случае то же самое. Так что это не накладные расходы ORDER BY.
Теперь получение последних 30 строк занимает около 180 секунд. Как я могу оптимизировать этот простой запрос?

158
задан Reinstate Monica 27 March 2013 в 20:25
поделиться