SQL のページングの豆知識

limit と offset の説明

limit / offset の基本

limitoffset は、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)で使えるようにしたパラメータです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です