MySQL で 1000 万件のレコードをすばやくクエリする方法

MySQL で 1000 万件のレコードをすばやくクエリする方法

通常のページングクエリ

日常業務でビッグデータ クエリに遭遇した場合、最初に行うのはページング クエリの使用です。

MySQLは、指定された数のデータを選択するためのlimit文をサポートしていますが、Oracleはrownumを使用して選択することができます。

mysql ページング クエリ ステートメントは次のとおりです。

SELECT * FROM テーブル LIMIT [オフセット,] 行 | 行 OFFSET オフセット
  • 最初のパラメータは、返される最初のレコード行のオフセットを指定するために使用されます。
  • 2 番目のパラメータは、返される行の最大数を指定します。
    • オフセットが同じ場合、データ量が多いほど時間がかかります
    • データ量が同じ場合、オフセットが大きいほど時間がかかります。

最適化する方法

上記の要約から、オフセットが大きく、データ量が多い場合、クエリ時間は依然としてかなり長くなることがわかります。そのため、これら 2 つのタイプの最適化を開始します。

大きなオフセット

サブクエリの使用

まずオフセット位置のIDを見つけて、データを照会します。

テスト制限1000000,10から*を選択
テスト制限 1000000,1 から ID を選択
id>=(テストから id を選択 制限 1000000,1) の条件でテストから * を選択 制限 10

実行してみると、最初のクエリに最も時間がかかり、3 番目のクエリは最初のクエリよりもわずかに速く、インデックスを使用するとサブクエリの方が高速であることがわかります。

しかし、これはIDが増加する場合にのみ適用されます

使用ID制限

この方法にはより高い要件があります。ID は継続的に増加し、ID の範囲を計算してから between を使用する必要があります。SQL は次のとおりです。

select * from test where id between 1000000 and 1000100 limit 100;
id>=1000000 の制限 100 のテストから * を選択

結果はすぐに出る

ここでは、エントリの数を制限するために limit が使用され、 offset は使用されません。

大量データ問題の最適化

  • 返されるデータの量も速度に直接影響します
  • 不要な列を減らすとクエリの効率が大幅に向上します

これで、MySQL で 1000 万件のレコードをすばやくクエリする方法に関するこの記事は終了です。MySQL クイック クエリの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQLデータベースの数千万件のデータクエリとストレージの詳細な説明
  • インデックスを使用して数千万のデータを持つ MySQL のクエリ速度を最適化する
  • MySQL 数千万のビッグデータに対するSQLクエリ最適化の知識ポイントのまとめ
  • MySQL数千万の大規模データに対する30のSQLクエリ最適化テクニックの詳細な説明
  • 数千万のデータを扱うMySQLのページングクエリのパフォーマンスを最適化する
  • 数百万件のレコードの分散ストレージを実現するための MySQL シャーディングのバッチ クエリ設計パターンの詳細な説明

<<:  Vue が値を返してフォームを動的に生成し、データを送信する仕組みの詳細な説明

>>:  CSSスコープ(スタイル分割)の使用の概要

推薦する

HTMLページが3秒後に自動的にジャンプする3つの一般的な方法

実際には、N 秒後にページを自動的にジャンプさせるにはどうすればよいかという問題によく遭遇します。私...

thead、tfoot、tbodyを使用して表を作成します

これらの 3 つのタグを間違った方法で使用して、タイトルを表に沿わせたり、tbody の高さを固定し...

vuex データの永続化のための 2 つの実装ソリューション

目次ビジネス要件:解決策 1: vuex-persistedstate解決策2: vuex-pers...

Mysql の主キーと一意キーの違いのまとめ

主キーとは何ですか?主キーは、テーブル内の各タプル (行) を一意に識別するテーブル内の列です。主キ...

CSS で div 凹角スタイルを実装するサンプル コード

通常の開発では、凸型の丸い角、つまり border-radius 属性を使用するのが一般的です。凹角...

VMware15 の Deepin インストール詳細チュートリアル (画像とテキスト)

序文Deepin のユーザー インターフェイスは、使用時に非常に見栄えがします。インターフェイス効果...

大きな太陽の天気アイコンを純粋な CSS で記述する方法の例

効果効果図は以下のとおりです実装のアイデアDivは太陽の長方形の光と影を実現します前の疑似要素は、既...

GIFアニメーション効果を模倣した自動ビデオ再生を実現するWeChatアプレットの例

需要背景:ミニプログラムページに GIF ダイナミック画像を挿入しますが、GIF 画像は通常サイズが...

Hadoop におけるネームノードとセカンダリネームノードの動作メカニズムの説明

1) プロセス 2) FSImageと編集NodeNode は HDFS の頭脳です。ファイルシステ...

MySQLの自己接続と結合の詳細な理解

1. MySQL 自己接続MySQL では、情報を照会するときに自分自身に接続 (自己接続) する必...

Vue3の一般的なAPIの使用方法の紹介

目次ライフサイクルの変化反応的な参照vue2.x では ref を使用して要素タグを取得します。vu...

MySQL レプリケーションの利点と原則を詳しく説明します

レプリケーションとは、マスター データベースの DDL および DML 操作をバイナリ ログを介して...

MySQL 8.0 のデフォルトのデータディレクトリを変更する (設定なしの簡単な操作)

使用シナリオ: Alibaba Cloud を使用しており、データディスクを別途購入しました (大容...

HTML チュートリアル: よく使われる HTML タグのコレクション (6)

関連記事:初心者が学ぶ HTML タグ (5)導入された HTML タグは、必ずしも XHTML 仕...

インスタンス化されたオブジェクトパラメータによるMySQLクエリ例の説明

この記事では、オブジェクト パラメータをインスタンス化して MySQL でデータをクエリする方法を紹...