[解決済み] 数百万レコードを扱うSQLiteの効率的なページング
2022-09-15 18:57:08
質問
SQLiteの結果をリストビューで表示する必要があります。もちろん、私は結果をページングする必要があります。
最初の選択肢は、LIMIT句を使うことです。例えば
SELECT * FROM Table LIMIT 100, 5000
5001から5100のレコードを返します。問題は、内部的にSQLiteは最初の5000レコードを"reads"しており、あまり効率的でないことです。
レコード数が多い場合のページングについて、どのような方法が良いでしょうか?
どのように解決するのですか?
常に
ORDER BY
節を使用することに注意してください。そうでない場合は、順序は任意です。
効率的なページングを行うには、順序付けられたフィールドの最初と最後の表示値を保存し、次のページを表示するときにその直後を続行します。
SELECT *
FROM MyTable
WHERE SomeColumn > LastValue
ORDER BY SomeColumn
LIMIT 100;
(これはより詳細に説明されています を参照してください。 .)
複数のソートカラムがある場合 (および SQLite 3.15 以降) は、ソートカラムに 行値比較 を使うことができます。
SELECT *
FROM MyTable
WHERE (SomeColumn, OtherColumn) > (LastSome, LastOther)
ORDER BY SomeColumn, OtherColumn
LIMIT 100;
関連
-
SQLiteの便利なコマンドのまとめ
-
SQLite3 用に ANSI から UTF8 への交換関数を提供する。
-
SQLiteインメモリデータベース学習マニュアル
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] ATTACHで開いたSQLiteデータベースファイルのテーブルを一覧表示するにはどうすればよいですか?
-
[解決済み] SQLiteでテーブルが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] AndroidでSQLiteを使用する際に、並行処理の問題を回避するにはどうすればよいですか?
-
[解決済み] Sqliteの複数カラムの主キー
-
[解決済み] SQLite - UPSERT *not* INSERT or REPLACE
-
[解決済み] SqLiteで上位5レコードを取得する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン