MySQL のページングステートメントの使用制限 Oracle や MS SqlServer と比較すると、MySQL のページング方式は泣きたくなるほど単純です。 - 文法: SELECT * FROM テーブル LIMIT [オフセット,] 行 | 行 OFFSET オフセット - 例: select * from table limit 5; --最初の 5 行を返します select * from table limit 0,5; --上記と同じで、最初の 5 行を返します select * from table limit 5,10; --6 行目から 15 行目を返します 制限を最適化する方法 クエリ ステートメントに select * from table limit 10000,10 などの大きなオフセットがある場合は、 limit を直接使用しないことをお勧めします。代わりに、最初にオフセット ID を取得し、次に limit size を直接使用してデータを取得します。効果はもっと良くなるでしょう。 のように: select * From customers where customer_id >=( 顧客IDを選択 顧客IDで並べ替え 制限10000,1 ) 制限 10; 1. テスト実験 MySQL ページングでは、limit start、count ページング ステートメントを直接使用します。 製品制限開始、カウントから*を選択 開始ページが小さい場合、クエリのパフォーマンスの問題はありません。次のように、10、100、1000、10000 (ページあたり 20 レコード) からのページングの実行時間を見てみましょう。 積限界から * を選択 10, 20 0.016 秒 積限界から * を選択 100, 20 0.016 秒 積限界から * を選択 1000, 20 0.047 秒 積限界から * を選択 10000, 20 0.094 秒 開始レコードが増加すると時間も増加することがわかりました。これは、ページング ステートメントの制限が開始ページ番号と密接に関係していることを示しています。 製品制限400000、20から*を選択 3.229秒 最後の記録ページを撮った時間を見てみましょう。 製品制限 866613 から * を選択、20 37.44 秒 このようにページ番号が最も大きいページの場合、この時間は明らかに耐えられないほど長いです。 このことから、次の 2 つのことが分かります。
2. 制限ページング問題に対するパフォーマンス最適化手法 2.1 テーブルをカバーするインデックスを使用してページングクエリを高速化する インデックス クエリを使用するステートメントにそのインデックス列 (カバー インデックス) のみが含まれている場合、クエリが非常に高速になることは誰もが知っています。 インデックス検索には最適化されたアルゴリズムがあり、データはクエリ インデックス上にあるため、関連するデータ アドレスを探す必要がなくなり、時間を大幅に節約できます。 また、MySQL には関連するインデックス キャッシュもあり、同時実行性が高い場合にキャッシュを使用すると効果が高まります。 この例では、id フィールドが主キーであることがわかっているため、デフォルトの主キー インデックスが含まれます。次に、カバーリング インデックスを使用したクエリがどのように実行されるかを見てみましょう。 製品制限 866613, 20 から ID を選択 クエリ時間は 0.2 秒で、すべての列をクエリするのに必要な 37.44 秒よりも約 100 倍高速です。 すべての列をクエリする場合も、2 つの方法があります。 id>= フォーマット: 製品から*を選択 ID > =(製品制限 866613 から ID を選択、1) 制限 20 クエリ時間は 0.2 秒であり、これは質的な飛躍です。 結合の使用 製品aから*を選択 JOIN (製品制限 866613, 20 から ID を選択) b ON a.ID = b.id クエリ時間も非常に短く、素晴らしいです! 実際、どちらも同じ原理を使用しているため、効果は似ています。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Hyper-V インストール CentOS 8 の問題の分析
>>: Reactプロジェクトで画像を導入するいくつかの方法
目次概要バーチャルドム原理実装プロセスパッチ方式sameVnode関数patchVnode関数upd...
接続数を取得する --- 最大接続数を取得します。SHOW VARIABLES LIKE '...
質問CSS 固定配置の position:fixed は非常に使いやすいです。ブラウザのビューポート...
ビルドを無効にするパーティション式では、次の構成はサポートされません。ストアドプロシージャ、ストアド...
Maven を使用してプロジェクトを管理する場合、jar パッケージをプライベート ウェアハウスにア...
Docker はコンテナに相当し、必要な動作環境に応じて対応する動作環境を構築できます。このとき、各...
1. トランザクションとは何ですか?データベース トランザクション (略称: トランザクション) は...
1. 質問:最近、挿入操作を行っています。MySQLのバージョンは5.7です。挿入は成功しますが、エ...
目次1. シンプルなページの例2.uni-appはvueコンポーネントとミニプログラムネイティブコン...
Dockerエラー1. 原因を確認するdocker ログ ネクサス2. エラーの原因OpenJDK ...
一部の Web サイトでは、画像が連続的にスクロールしているのをよく見かけます。この効果は、CSS ...
目次1. このキーワード2. カスタム属性3. 包括的なケース1:タブの実装付録要約する1. このキ...
この記事に誤りがあったり、ご提案がありましたら、お気軽にご連絡ください。よろしくお願いいたします。は...
JS のクラスの定義や継承は本当に多様なので、別のノートブックを開いて記録しておきます。意味オブジェ...
今日の午後からVS2019をMySQLで使えるのではないかと思い、いろいろ環境構築を始めました。プロ...