MySQL ページング クエリは通常、制限を通じて実装されます。 limit は 1 つまたは 2 つの整数パラメータを受け入れます。パラメータが 2 つの場合、最初のパラメータは返される最初のレコード行のオフセットを指定し、2 番目のパラメータは返されるレコード行の最大数を指定します。初期レコード行オフセットは 0 です。 PostgreSQL との互換性のため、limit は limit # offset # もサポートします。 質問: オフセットが小さい場合は、limit を直接使用してクエリを実行しても問題ありません。ただし、データ量が増えると、limit ステートメントのオフセットが大きくなり、ページングが進むにつれて速度が大幅に低下します。 最適化のアイデア: データ量が多い場合は、レコードをスキャンしすぎないようにする 解決策: サブクエリ ページング メソッドまたは JOIN ページング メソッド。 JOIN ページングとサブクエリ ページングの効率は基本的に同じレベルであり、消費される時間も基本的に同じです。 ここに例があります。一般的に、MySQL の主キーは自動増分数値型です。この場合、最適化には次の方法が使用できます。 実際の運用環境で 60,000 件のレコードを含むテーブルを例に、最適化前後のクエリ時間を比較します。 -- 従来の制限、ファイルスキャン [SQL] SELECT * FROM tableName ORDER BY id LIMIT 50000,2; 影響を受ける行: 0 時間: 0.171秒 -- サブクエリ方式、インデックススキャン [SQL] テーブル名から * を選択 WHERE id >= (SELECT id FROM tableName ORDER BY id LIMIT 50000 , 1) 制限 2; 影響を受ける行: 0 時間: 0.035秒 -- JOIN ページングメソッド [SQL] テーブル名からt1を選択する JOIN (SELECT id FROM tableName ORDER BY id LIMIT 50000, 1) AS t2 t1.id <= t2.id の場合、t1.id によって LIMIT 2 が設定されます。 影響を受ける行: 0 時間: 0.036秒 最適化後、パフォーマンスが何倍も向上していることがわかります。 最適化の原則: サブクエリはインデックスに対して実行され、通常のクエリはデータ ファイルに対して実行されます。一般的に、インデックス ファイルはデータ ファイルよりもはるかに小さいため、より効率的に操作できます。すべてのフィールドの内容を取得する必要があるため、最初の方法では多数のデータ ブロックにまたがって取得する必要がありますが、2 番目の方法では基本的にインデックス フィールドに従って検索した後、対応する内容を直接取得するため、当然ながら効率が大幅に向上します。したがって、制限を最適化するには、制限を直接使用するのではなく、まずオフセット ID を取得し、次に制限サイズを直接使用してデータを取得します。 実際のプロジェクトでは、同様の戦略パターンを使用してページングを処理できます。たとえば、1 ページあたり 100 件のレコードがある場合、ページ数が 100 未満の場合は最も基本的なページング方法が使用されますが、ページ数が 100 を超える場合はサブクエリ ページング方法が使用されます。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: Vue3とElectronを使ったデスクトップアプリケーションの詳しい説明
mysql ストアド プロシージャの概念:特定のタスク (クエリと更新) を実行できる、データベース...
原因は、プロセスが特定の時点でシステム制限を超える数のファイルと通信リンクを開くことです。 システム...
目次1. ジョブ実行のフォールトトレランス1.1 タスクフェイルオーバー戦略1.2 ジョブ再開戦略2...
# には位置情報が含まれます。デフォルトのアンカーは #top で、これは Web ページの上部です...
最近ディープラーニングを学ぶためにUbuntu+Python 3.6バージョンを使う必要があるため、...
目次序文1. Linux は yum ソースを変更します (MYSQL のインストールが遅い場合は試...
目次1. はじめに2. ソリューションの実装2.1 実装コード2.2 コードの説明2.3 検証結果1...
目次1. 使い方が簡単2. DISTINCTを使用して重複を削除する3. COUNT()の詳細な紹介...
序文プロジェクト内のパズルゲーム(デジタル華容路とも呼ばれる)を再構築するのに 2 日かかりました。...
ドロップダウン付きのテキストボックスを使用すると、ユーザーはドロップダウン リストから入力を選択した...
年、月、週、日グループによる MySQL クエリ1. 学年別検索 SELECT DATE_FORMA...
最近のビジネスでは、オンライン トレーニング システムが特定のオンライン プレビュー ページに対する...
この場合、transition という単語を間違って書いたため、午後中ずっとそれに取り組みました。本...
目次1. 関連構成ケース1(使用ツールはvue-cil)ケース2(使用するツールはwebpack) ...
ファイル サーバーは、企業内で最も一般的に使用されるサーバーの一つであり、主にファイル共有を提供する...