115

SQLite の結果をリスト ビューで表示する必要があります。もちろん、結果をページングする必要があります。

最初のオプションは、LIMIT 句を使用することです。例えば:

SELECT * FROM Table LIMIT 100, 5000

レコード 5001 から 5100 を返します。問題は、SQLite が内部的に最初の 5000 レコードを「読み取る」ことであり、あまり効率的ではありません。

レコードが多い場合のページングの最適な方法は何ですか?

4

1 に答える 1

135

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;
于 2013-01-22T22:03:00.407 に答える