PHP アドバンス

PHP MySQL 取得件数の制限 (LIMIT)

1. MySQLテーブルからの取得件数を制限する

MySQLの LIMIT 句は、SELECT コマンドによって返されるレコードの数を制限するために使用されます。

LIMIT 句は、レコード数の多い大規模なテーブルを扱う際に非常に有用です。大量のレコードを一度に返すと、サーバーのメモリ消費量が増大し、システムのパフォーマンス(Performance)に悪影響を及ぼす可能性があるからです。

例えば、「Orders」テーブルから 1番目から30番目までのレコードを選択したいとします。その場合、SQLクエリは以下のようになります。

$sql = "SELECT * FROM Orders LIMIT 30";

上記のクエリを実行すると、テーブル内の最初の30件のレコードが返されます。

2. OFFSETを使用した範囲指定の取得

では、16番目から25番目までのレコードを取得したい場合はどうすればよいでしょうか?

MySQLには、これを処理するための OFFSET という仕組みが用意されています。

以下のクエリは、「15件分をスキップし(OFFSET 15)、その後の10件のレコードのみを返す」という意味になります。

$sql = "SELECT * FROM Orders LIMIT 10 OFFSET 15";

3. LIMITの短縮構文

同じ結果を得るために、より短い構文(Syntax)を使用することも可能です。

$sql = "SELECT * FROM Orders LIMIT 15, 10";

この書き方をする場合、カンマで区切られた数値の順序が OFFSET, LIMIT となり、先ほど(LIMIT 10 OFFSET 15)とは逆順になることに注意してください。Webアプリケーションのページネーション(Pagination)機能を実装する際には、この LIMITOFFSET の組み合わせが頻繁に利用されます。