Эффективная подкачка в SQLite с миллионами записей
Мне нужно показать результаты SQLite в виде списка. Конечно, мне нужно посмотреть результаты.
первый вариант-использовать предложение LIMIT. Например:
SELECT * FROM Table LIMIT 100, 5000
он возвращает записи от 5001 до 5100. Проблема в том, что внутренне SQLite "читает" первые 5000 записей, и это не слишком эффективно.
каков наилучший подход для подкачки, когда есть много записей?
1 ответ:
обратите внимание, что вы всегда должны использовать
ORDER BY
пункт; в противном случае вы получите просто какой-то случайный заказ.чтобы сделать эффективную подкачку, сохраните первые / последние отображаемые значения упорядоченных полей и продолжайте сразу после них при отображении следующей страницы:
SELECT * FROM MyTable WHERE SomeColumn > LastValue ORDER BY SomeColumn LIMIT 100;
(Это объясняется более подробно на SQLite wiki.)
когда у вас есть несколько столбцов сортировки (и SQLite 3.15 или более поздней версии), вы можете использовать значение строки сравнение для этого:
SELECT * FROM MyTable WHERE (SomeColumn, OtherColumn) > (LastSome, LastOther) ORDER BY SomeColumn, OtherColumn LIMIT 100;