Оптимизация Sqlite Query (с использованием Limit и Offset)
Ниже приведен запрос, который я использую для получения фиксированного количества записей из базы данных с миллионами записей:
select * from myTable LIMIT 100 OFFSET 0
Я заметил, что если смещение очень большое, например, 90000, то выполнение запроса занимает больше времени. Ниже приведена разница во времени между двумя запросами с разными смещениями:
select * from myTable LIMIT 100 OFFSET 0 //Execution Time is less than 1sec
select * from myTable LIMIT 100 OFFSET 95000 //Execution Time is almost 15secs
Может кто-нибудь предложить мне, как оптимизировать этот запрос? Я имею в виду, что время выполнения запроса должно быть одинаковым и быстрым для любого количества записей, которые я хочу извлечь из любого OFFSET.
Недавно добавлено: - Фактический сценарий состоит в том, что у меня есть база данных, имеющая> чем 1 миллион записей. Но так как этоэто встроенное устройство, я просто могут делать "выберите * из myTable " а затем получить все записи из запроса. Мое устройство вылетает. Вместо этого я продолжаю извлекать записи в пакетном режиме (размер пакета = 100 или 1000 записей) в соответствии с запросом, упомянутым выше. Но, как я уже говорил, он становится медленным, когда увеличивается смещение. Итак, моя конечная цель - я хочу прочитать все записи из базы данных. Но так как я могуЧтобы получить все записи за одно выполнение, мне нужен другой эффективный способ добиться этого.