データベースでは、多くの場合、データに対してページング クエリを実行し、各ページに表示される数値を制御し、対応する結果を返す必要があります。
MySQL は、LIMIT キーワードと OFFSET キーワードを使用して、ページング クエリを実行する非常に簡単な方法を提供します。
LIMIT はクエリ結果から返されるレコードの行数を定義し、OFFSET は結果が返される行を定義します。例:
SELECT * FROM table_name LIMIT 10 OFFSET 20;
上記のステートメントは、テーブル table_name から 21 行目から 30 行目のデータを返します。
1 から 10 行のデータを表示したい場合は、LIMIT を直接使用します:
SELECT * FROM table_name LIMIT 10;
MySQL には LIMIT メソッドの別の使い方もあります。は 2 つのパラメータを使用して、返されるレコードの数と開始行番号を指定します。例:
SELECT * FROM table_name LIMIT 20, 10;
上記のステートメントは、テーブル table_name から 21 行目から 30 行目のデータを返します。
LIMIT キーワードと OFFSET キーワードに加えて、ページング クエリに ROW_NUMBER() 関数を使用することもできます。この関数は SQL Server および Oracle データベースで広く使用されていますが、MySQL ではあまり一般的ではありません。
この関数をページング クエリに使用するには、最初にクエリ結果を並べ替えてから、ROW_NUMBER() 関数を追加する必要があります。例:
SELECT *, ROW_NUMBER() OVER (ORDER BY column_name) as row_num
FROM table_name
LIMIT 20 OFFSET 0;
上記のステートメントはテーブル内にあります。 table_name 列 column_name ごとに結果を並べ替え、データの最初の 20 行を返します。
基本的なページング クエリに加えて、INNER JOIN や LEFT JOIN を使用して複数のテーブルを結合し、より包括的なデータを取得するなど、他のページング手法も使用できます。
たとえば、2 つのテーブルで特定の条件を満たすレコードを検索する必要があるとします。ネストされたクエリを使用して、INNER JOIN または LEFT JOIN の場合を制限できます。
SELECT * FROM table_1
INNER JOIN table_2 ON table_1.id = table_2.id
WHERE 条件
LIMIT 20 OFFSET 0 ;
上記のステートメントは、テーブル table_1 と table_2 で条件を満たすレコードを検索し、データの最初の 20 行を返します。
ページング クエリを実行するときは、パフォーマンスと効率の問題にも注意する必要があります。たとえば、OFFSET キーワードを使用する場合、MySQL は返すレコードを見つけるために結果セット全体をスキャンする必要があります。
クエリの効率を向上させるために、主キーまたは一意のインデックスを使用してテーブルを並べ替えることができます。これにより、クエリが高速になり、カバー インデックスを使用して一時テーブルの使用を回避できます。
一般に、ページング クエリを実行するときは、カテゴリごとに各クエリのニーズを考慮し、適切な方法を採用してクエリの効率を向上させ、クエリ結果の精度を確保する必要があります。
以上がページネーションクエリのmysqlステートメントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。