SQL のページングの豆知識

limit / offset の基本
limit と offset は、SQL のページング(データの一部だけを取得する機能)のために使われるパラメータです。
つまり…
- limit → 何件取りたいか
- offset → どこから取り始めるか(開始位置)
を指定するための引数です。
1. limit とは?
取得する最大件数 を指定します。
例:
-- SQL
LIMIT 10 -- 最大 10 件だけ取得
Flutter(sqflite)では:
limit: 10
2. offset とは?
何件目からデータを取得するか を指定します。
例:
-- SQL
OFFSET 20 -- 20 件スキップして 21 件目から取得
Flutter(sqflite)では:
offset: 20
3. limit + offset を組み合わせてページングする
- 1ページ = 10件
- 2ページ目を取るとき
limit: 10,
offset: 10, // 10件スキップ(11件目から取る)
3ページ目は:
limit: 10,
offset: 20, // 20件スキップ(21件目から)
4. 実際の Flutter コード例(sqflite)
final result = await db.query(
'members',
limit: 10,
offset: 20,
);
これは SQL に変換されて以下になります:
SELECT * FROM members LIMIT 10 OFFSET 20;
5. なぜ null 許容(int?)なのか?
limit と offset は指定しなくてもよいオプション項目 だからです。
db.query('members'); // limit も offset もなし(全件取得)
指定しなければ null → 対応する SQL 句を追加しない、という動きになります。
6. limit / offset の用途まとめ
| 項目 | 意味 |
|---|---|
| limit | 取得件数を制限する(上限) |
| offset | 開始位置を指定する |
| 組み合わせ | ページング / スクロール読み込みに最適 |
7. 具体例(ページング処理)
int page = 2;
int pageSize = 20;
final members = await db.query(
'members',
limit: pageSize,
offset: pageSize * (page - 1),
);
結果:
- page = 2 → offset = 20 → 21件目から 20件取得
まとめ
- limit:何件取得するか
- offset:どこから取得するか
→ これらは、SQL のページング機能を Flutter(sqflite)で使えるようにしたパラメータです。
