ページネーションはユーザー エクスペリエンスにおいて重要な役割を果たし、ユーザーがデバイスに負担をかけずに大規模なデータセット間を移動できるようにします。 OFFSET と LIMIT を使用して MySQL クエリにページネーションを実装する場合、必要なページ数を計算するために結果の合計数を決定することが重要です。
ただし、複数のクエリ (1 つはページネーション用、もう 1 つはカウント用) を実行すると、計算的には非効率的です。 MySQL は、SQL_CALC_FOUND_ROWS 修飾子を使用して、より最適化されたソリューションを提供します。
SQL_CALC_FOUND_ROWS の実装
SQL_CALC_FOUND_ROWS を利用するには、元の SQL_CALC_FOUND_ROWS を SELECT ステートメントの前に追加するだけです。クエリ:
SELECT SQL_CALC_FOUND_ROWS * FROM table_name WHERE category_id = ? LIMIT ?, ?;
どこ?カテゴリ ID、オフセット、制限のパラメータを表します。
結果の総数の取得
変更したクエリを実行した後、FOUND_ROWS() 関数を使用して取得します。 LIMIT を指定しない場合に返された結果の総数句:
$total_results = $this->db->query("SELECT FOUND_ROWS()")->row()->total_results;
総ページ数の計算
ここで、次の式を使用して総ページ数を計算できます:
$total_pages = ceil($total_results / $limit);
結論
を使用することでSQL_CALC_FOUND_ROWS を使用すると、単一のクエリで結果の合計数を取得できるため、重複して実行する必要がなくなります。このアプローチにより、リソースの使用率が最適化され、ページネーション メカニズムの効率が向上します。
以上がSQL_CALC_FOUND_ROWS は MySQL のページ分割効率をどのように向上させることができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。