Эффективная подкачка в SQLite с миллионами записей


Мне нужно показать результаты SQLite в виде списка. Конечно, мне нужно посмотреть результаты.

первый вариант-использовать предложение LIMIT. Например:

SELECT * FROM Table LIMIT 100, 5000

он возвращает записи от 5001 до 5100. Проблема в том, что внутренне SQLite "читает" первые 5000 записей, и это не слишком эффективно.

каков наилучший подход для подкачки, когда есть много записей?

1 78

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;