MySQL のデータ量が多い場合、制限ページングが使用されます。ページ数が増えると、クエリの効率が低下します。 実験 1. limit start、count paging ステートメントを直接使用します。 開始ページが小さい場合、クエリのパフォーマンスの問題はありません。次のように、10、100、1000、10000 (ページあたり 20 レコード) からのページングの実行時間を見てみましょう。 注文制限 10、20 から * を選択 0.016 秒 注文制限 100、20 から * を選択 0.016 秒 注文制限 1000、20 から * を選択 0.047 秒 注文制限 10000、20 から * を選択 0.094 秒 開始レコードの数が増えると、時間も長くなることがわかりました。これは、ページング ステートメントの制限が開始ページ番号と密接に関係していることを示しています。では、開始レコードを 40w に変更して確認してみましょう。 最後の記録ページを撮った時間を見てみましょう。 明らかにこの時間は耐え難いものです。 このことから、次の 2 つのことが分かります。 1) 制限ステートメントのクエリ時間は開始レコードの位置に比例します。 2) MySQL の limit ステートメントは非常に便利ですが、レコード数が多いテーブルに直接使用するには適していません。 2. 制限ページング問題に対するパフォーマンス最適化手法 テーブルのカバーインデックスを使用してページングクエリを高速化する インデックス クエリを使用するステートメントにそのインデックス列 (カバー インデックス) のみが含まれている場合、クエリが非常に高速になることは誰もが知っています。 インデックス検索には最適化されたアルゴリズムがあり、データはクエリ インデックス上にあるため、関連するデータ アドレスを探す必要がなくなり、時間を大幅に節約できます。また、MySQL には関連するインデックス キャッシュもあり、同時実行性が高い場合にキャッシュを使用すると効果が高まります。 この例では、id フィールドが主キーであることがわかっているため、デフォルトの主キー インデックスが含まれます。次に、カバーリング インデックスを使用したクエリがどのように実行されるかを見てみましょう。 今回は、次のように、最後のページのデータをクエリします (id 列のみを含むカバー インデックスを使用)。 すべての列をクエリするのにかかる 37.44 秒と比較すると、速度は 100 倍以上向上します。 すべての列をクエリする場合、2 つの方法があります。1 つは id>= 形式、もう 1 つは結合を使用する方法です。実際の状況を確認してください。 クエリ時間は0.2秒で、これは質的な飛躍です(笑) 別の書き方
クエリ時間も非常に短い 以下もご興味があるかもしれません:
|
この記事では、パズル効果を実現するためのネイティブjsの具体的なコードを参考までに共有します。具体的...
最近の勉強で、GitHub でレイアウトの練習をいくつか見つけたのですが、レイアウトにまったく慣れて...
目次エラーメッセージ原因エラーのデモンストレーション回避策方法1方法2方法3エラーメッセージ現在の場...
目次sambaをアンインストールしてインストールする新しい共有パスを作成し、権限を設定するSamba...
1. v-onイベント監視DOM イベントをリッスンするには、v-on ディレクティブを使用します。...
目次1. ルール 1: Object.Method() 1.1 ケース1 1.2 ケース2 1.3 ...
目次配列の紹介配列リテラル2次元配列要約する配列の紹介配列- Arrayもオブジェクトですこれは通常...
フォーマットエンコーディング1. ページの幅は600~800px、長さは1024px以内に設定してく...
フォームを作成するときに、名前、携帯電話番号、出生地などの 2 つのフィールドを揃える状況に遭遇する...
多くの場合、bash スクリプト内またはスクリプト自体内で直接 sudo を使用してコマンドを実行す...
最初は悲しい気持ちになりました。スクリーンショットは以下の通りです。 少し苦労しましたが、解決策は次...
MySQL でデータを削除するには 2 つの方法があります。切り詰めは大まかな伐採の一種である削除は...
目次MySQLネイティブレプリケーションに基づくマスター-マスター同期ソリューションGaleraレプ...
この記事の例はすべて小さなプログラムで書かれていますが、実装される機能には影響しません。 wxmlル...
目次概要4つの例例1: 誕生日で説明する約束の基本例2: 数字当てゲーム例3: Web APIから国...