MySQL のページネーション: 二重クエリを使用しない最適なテクニック
ページネーションは、大規模なデータセットを管理可能なチャンクに分けて表示するための基本的なテクニックであり、多くの場合、2 つの別々の方法が必要です。 MySQL でのクエリ。 1 つのクエリは結果の合計数を取得し、別のクエリはページネーション パラメータに基づいて結果を制限します。
二重クエリ: 従来のアプローチ
伝統的に、ページネーションは次の手順:
-
クエリを実行して、合計数をカウントします。 results:
SELECT COUNT(*) FROM `table` WHERE `some_condition`
-
特定のページを表示するように結果を制限します:
SELECT `fields` FROM `table` WHERE `some_condition` LIMIT 0, 10
二重クエリの制限
このアプローチは信頼できますが、次のような問題があります。制限事項:
- 2 つのクエリ: 2 つの別々のデータベース呼び出しが必要であり、パフォーマンスに影響を与える可能性があります。
- キャッシュ: カウントをキャッシュすると軽減できるパフォーマンス上の懸念がありますが、追加の要因が発生します
代替手法
二重クエリは広く使用されている手法ですが、ページネーションの唯一のオプションではありません。代替方法は次のとおりです。
SQL_CALC_FOUND_ROWS および FOUND_ROWS() を使用する
-
SQL_CALC_FOUND_ROWS を使用してクエリを実行する句:
SELECT `fields` FROM `table` WHERE `some_condition` ORDER BY `field_name`
-
SELECT FOUND_ROWS() を実行して結果の総数を取得します:
SELECT FOUND_ROWS()
の制限事項SQL_CALC_FOUND_ROWS
- パフォーマンス: MySQL の既知のバグにより、大きなテーブルでの二重クエリよりも遅くなる可能性があります。
- 順序: 最初に ORDER BY 句が必要ですquery.
キャッシュ
合計数をキャッシュすると、二重クエリと SQL_CALC_FOUND_ROWS 手法の両方のパフォーマンスが大幅に向上します。カウントを一時データベースまたはキャッシュに保存すると、カウント クエリを繰り返し実行することを避けることができます。
最適な手法の選択
アプリケーションに最適なページネーション手法は、アプリケーションによって異なります。データセットのサイズ、パフォーマンス要件、並べ替えまたはフィルター基準の有無など、さまざまな要因に基づいて決定します。次のガイドラインを考慮してください:
- パフォーマンスが重要ではない小規模なデータセットの場合、シンプルで信頼性の高いオプションは二重クエリです。
- パフォーマンスが重要な大規模なデータセットの場合は、カウントをキャッシュします。二重クエリを大幅に改善できます。
- 並べ替えやフィルタリングを伴うページネーションの場合、SQL_CALC_FOUND_ROWS は double の効率的な代替手段です。クエリ中。
以上が2 つのクエリを作成せずに MySQL のページネーションを最適化するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、DockerのMySQLメモリ使用量を最適化することを調査します。 監視手法(Docker統計、パフォーマンススキーマ、外部ツール)および構成戦略について説明します。 これらには、Dockerメモリの制限、スワッピング、およびcgroupsが含まれます

この記事では、MySQLの「共有ライブラリを開くことができない」エラーについて説明します。 この問題は、必要な共有ライブラリ(.so/.dllファイル)を見つけることができないMySQLの障害に起因しています。ソリューションには、システムのパッケージMを介してライブラリのインストールを確認することが含まれます。

この記事では、MySQLのAlter Tableステートメントを使用して、列の追加/ドロップ、テーブル/列の名前の変更、列データ型の変更など、テーブルを変更することについて説明します。

この記事では、PHPMyAdminの有無にかかわらず、LinuxにMySQLを直接インストールするのとPodmanコンテナを使用します。 それは、各方法のインストール手順を詳述し、孤立、携帯性、再現性におけるポッドマンの利点を強調しますが、

この記事では、自己完結型のサーバーレスリレーショナルデータベースであるSQLiteの包括的な概要を説明します。 SQLiteの利点(シンプルさ、移植性、使いやすさ)と短所(同時性の制限、スケーラビリティの課題)を詳しく説明しています。 c

このガイドは、HomeBrewを使用してMacOSに複数のMySQLバージョンをインストールおよび管理することを示しています。 Homebrewを使用して設置を分離し、紛争を防ぐことを強調しています。 この記事では、インストール、開始/停止サービス、および最高のPRAを詳述しています

記事では、証明書の生成と検証を含むMySQL用のSSL/TLS暗号化の構成について説明します。主な問題は、セルフ署名証明書のセキュリティへの影響を使用することです。[文字カウント:159]

記事では、MySQLワークベンチやPHPMyAdminなどの人気のあるMySQL GUIツールについて説明し、初心者と上級ユーザーの機能と適合性を比較します。[159文字]


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 中国語版
中国語版、とても使いやすい

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター
