Подтвердить что ты не робот

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

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

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

SELECT * FROM Table LIMIT 100, 5000

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

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

4b9b3361

Ответ 1

Обратите внимание, что вы всегда должны использовать предложение ORDER BY; в противном случае порядок произвольный.

Для эффективной подкачки сохраните первые/последние отображаемые значения упорядоченных полей и продолжайте сразу после них при отображении следующей страницы:

SELECT *
FROM MyTable
WHERE SomeColumn > LastValue
ORDER BY SomeColumn
LIMIT 100;

(Это объясняется более подробно на вики-сайте SQLite.)

Если у вас есть несколько столбцов сортировки (и SQLite 3.15 или новее), вы можете использовать сравнение значений строк для этого:

SELECT *
FROM MyTable
WHERE (SomeColumn, OtherColumn) > (LastSome, LastOther)
ORDER BY SomeColumn, OtherColumn
LIMIT 100;