PostgreSQLのLIMITとOFFSETを完全解説|初心者でもわかる件数指定とページ分割の基本
生徒
「PostgreSQLでデータを表示すると、たくさん出てきて見づらいです。必要な分だけ表示する方法はありますか?」
先生
「ありますよ。それがLIMITとOFFSETです。本のページをめくるように、表示する件数や位置を決められます。」
生徒
「パソコンをほとんど触ったことがなくても理解できますか?」
先生
「大丈夫です。名簿を何人分ずつ見るか、どこから見るか、という感覚で説明します。」
1. SQLとは何か?
SQLは、PostgreSQLなどのデータベースに保存されている情報を操作するための言葉です。データベースは、大量の情報を表の形で整理して保存する箱のようなものです。
SQLを使うことで、その表の中からデータを取り出したり、新しく追加したり、内容を変更したりできます。LIMITとOFFSETは、取り出すときの「量」と「位置」を決めるために使います。
2. LIMITとOFFSETの役割をイメージで理解しよう
LIMITは「何件まで表示するか」を決める命令です。OFFSETは「何件目から表示を始めるか」を決める命令です。
例えば、名簿に100人分の名前があるとします。その中から最初の10人だけ見たい場合はLIMITを使います。11人目から20人目を見たい場合は、OFFSETとLIMITを組み合わせます。
3. サンプルテーブルを確認しよう
ここではusersテーブルを使って説明します。SQLを実行する前の状態は次の通りです。
id | name | age | email
---+------------+-----+----------------------
1 | 山田太郎 | 25 | taro@example.com
2 | 佐藤花子 | 19 | hanako@example.com
3 | 鈴木一郎 | 30 | ichiro@example.com
4 | 高橋次郎 | 18 | jiro@example.com
5 | 伊藤美咲 | 22 | misaki@example.com
6 | 中村健 | 28 | ken@example.com
7 | 小林愛 | 21 | ai@example.com
このようにデータが多くなると、すべてを一度に表示するのは大変になります。
4. LIMITで表示件数を制限する方法
LIMITを使うと、表示する行数を制限できます。例えば、最初の3件だけ表示したい場合は次のように書きます。
SELECT *
FROM users
LIMIT 3;
実行結果は次のようになります。
id | name | age | email
---+------------+-----+----------------------
1 | 山田太郎 | 25 | taro@example.com
2 | 佐藤花子 | 19 | hanako@example.com
3 | 鈴木一郎 | 30 | ichiro@example.com
LIMITは「ここまでで止めて」という合図だと考えると分かりやすいです。
5. OFFSETで表示開始位置をずらす方法
OFFSETは、最初の何件を飛ばすかを指定します。例えば、最初の3件を飛ばして、その後のデータを見たい場合は次のように書きます。
SELECT *
FROM users
OFFSET 3;
OFFSETだけを書くと、4件目以降のすべてが表示されます。
6. LIMITとOFFSETを組み合わせて使う
LIMITとOFFSETは一緒に使うことが多いです。例えば、「4件目から3件分だけ表示したい」場合は次のようになります。
SELECT *
FROM users
LIMIT 3 OFFSET 3;
実行結果は次の通りです。
id | name | age | email
---+------------+-----+----------------------
4 | 高橋次郎 | 18 | jiro@example.com
5 | 伊藤美咲 | 22 | misaki@example.com
6 | 中村健 | 28 | ken@example.com
これは、ページ分割表示によく使われる書き方です。
7. ORDER BYと一緒に使う重要性
LIMITとOFFSETを使うときは、ORDER BYと一緒に使うことがとても大切です。並び順を決めないと、毎回表示される内容が変わることがあります。
SELECT *
FROM users
ORDER BY age
LIMIT 3 OFFSET 2;
年齢順に並べたうえで、指定した範囲だけを表示することで、安定した結果が得られます。
8. LIMITとOFFSETを使うときの注意点
LIMITとOFFSETは便利ですが、データが非常に多い場合、OFFSETの数値が大きくなると処理に時間がかかることがあります。
また、LIMITとOFFSETは表示方法を変えるだけで、データそのものを削除したり変更したりするものではありません。安心して使って大丈夫です。