ホームページ > データベース > mysql チュートリアル > SQL_CALC_FOUND_ROWS は MySQL のページ分割効率をどのように向上させることができますか?

SQL_CALC_FOUND_ROWS は MySQL のページ分割効率をどのように向上させることができますか?

Linda Hamilton
リリース: 2024-12-06 04:17:09
オリジナル
266 人が閲覧しました

How Can SQL_CALC_FOUND_ROWS Improve MySQL Pagination Efficiency?

SQL_CALC_FOUND_ROWS を使用して MySQL クエリのページネーションを最適化する

ページネーションはユーザー エクスペリエンスにおいて重要な役割を果たし、ユーザーがデバイスに負担をかけずに大規模なデータセット間を移動できるようにします。 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート