Мне нужно показать результаты SQLite в виде списка. Конечно, мне нужно опубликовать результаты.
Первый вариант - использовать предложение LIMIT. Например:
SELECT * FROM Table LIMIT 100, 5000
Он возвращает записи с 5001 по 5100. Проблема заключается в том, что внутренне SQLite "считывает" первые 5000 записей и не слишком эффективен.
Каков наилучший подход к поисковому вызову, когда есть много записей?
Обратите внимание, что вам всегда нужно использовать предложение 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;