MySQLのサブクエリユニオンの効率性についての簡単な説明と

MySQLのサブクエリユニオンの効率性についての簡単な説明と

最近の製品テストでは、同時呼び出し数が 10 未満の場合に応答時間が 100 ミリ秒以内に維持できないという問題が見つかりました。ただし、同時リクエスト数が 30 に達すると、応答時間は 1 秒を超えます。これは受け入れられません。要件は 1 秒間に 100 件の同時リクエストを実行することです。

テストの結果、時間は主にストレージ プロセスの 1 つで消費されていることがわかりました。ストアド プロシージャのステートメントを 1 つずつ確認しましたが、明らかな不合理は見つかりませんでした。 MySQL 自体はミリ秒レベルの時間を提供できないため、ミリ秒を提供できる MySQL 時間関数を Google で検索し、テストを行って位置付けを行いました。それは次のような文の 1 つであることがわかりました。

 A、B から .... を選択します。ただし、..... であり、A.id が (C から id を選択し、...);

in サブクエリ ステートメントでは、ごく少数の結果しか生成されません。この声明を説明することに問題はありません。単一テストでは問題ありません。しかし、同時リクエストの数が多いと問題が発生します。

変更を加えました:

 A、B から ... を選択します (C から ... を選択します (ただし ...)) S から .... を選択します。

もう一度テストしてみると、パフォーマンスが大幅に向上しました。同時実行数 50 と 10 の応答速度はほぼ同じです。

MySQL では、in の代わりにサブクエリ union を使用するように変更することを提案する場合があります。これまで実験されたことはありません。ようやく効率性が分かりました。もちろん、すべてを信じることはできません。それは依然として、あなた自身のアプリケーションに依存します。いくつかのテストと実験を行うのが最善でしょう。

要約する

以上が、MySQL サブクエリの union と IN の効率性に関するこの記事の内容のすべてです。皆様のお役に立てれば幸いです。

興味のある方は以下を参照してください:

いくつかの重要なMySQL変数

MySQL マスターライブラリ binlog (master-log) とスレーブライブラリ relay-log 間のコードの詳細な説明

MySQL データベース開発仕様 [推奨]

ご質問がございましたら、メッセージを残していただければ一緒にご相談させていただきます。友人の皆さんも123WORDPRESS.COMのウェブサイトを応援していただければ幸いです。

以下もご興味があるかもしれません:
  • MySQL マルチテーブルジョイントクエリ効率の詳細な分析と最適化
  • MySQLの結合クエリ、ユニオンクエリ、サブクエリの原理と使用例の詳細な説明
  • MySQL フルテキスト インデックス、ジョイント インデックス、Like クエリ、JSON クエリのうち、どれが高速ですか?
  • MySQL マルチテーブル共同クエリ操作例の分析
  • Mysql の 2 つのテーブル間の結合クエリの 4 つの状況の概要
  • いくつかのMySQLジョイントクエリの一般的な説明
  • MySQL ジョイントクエリ UNION と UNION ALL の使用法の紹介
  • MySQL のジョイント クエリで UNION と Order by を使用する際のエラー問題の解決方法
  • MySQLのマルチテーブルジョイントクエリはテーブル実装コードの内容を返します
  • MySQLの共同クエリ最適化メカニズムの詳細な説明

<<:  bash スクリプトで ssh/scp コマンドにパスワードを渡す方法の詳細な説明

>>:  jsは赤い封筒の順序と量を指定するアルゴリズムを実装します

推薦する

MySQL ダーティ ページ フラッシュとテーブル スペースの縮小の原理の分析

mysql ダーティページWAL メカニズムにより、InnoDB はステートメントを更新するときに、...

my.cnf (my.ini) 重要なパラメータの最適化設定手順

MyISAM ストレージエンジンMyISAM ストレージ エンジンは、書き込みよりも読み取りが多く、...

SQL 最適化チュートリアル: IN クエリと RANGE クエリ

序文「High Performance MySQL」では、インデックスでは範囲フィールドの後の部分が...

静的ウェブサイトをRSSに変換するツール

<br /> この記事は allwebdesignresources.com から Ra...

入力ファイルのカスタムボタンの美化(デモ)

以前にも同じような記事を書いたことがありますが、js スクリプトを使用しており、ファイルパスを表示で...

Vueは遅延読み込みによりページの応答速度を向上

目次概要遅延読み込みとは何ですか?最適化を開始するビジネスモジュールを分割する遅延読み込みルート構成...

WebプロジェクトのDockerデプロイメントの実装

前回の記事では、docker サービスをインストールしました。引き続き、Web プロジェクトのデプロ...

Saltstack に Zabbix サービスをデプロイする方法を説明します

目次SaltstackがZabbixサービスを導入httpd、mysql、phpをインストールするh...

MySQL 起動失敗の問題とシナリオ分析

1. ワンストップソリューション1. 問題の分析と特定 # MySQL設定ファイルを見つけて、MyS...

EChartsマルチチャート連携機能の実装プロセス

表示するデータが多い場合、1 つのチャートに表示しても効果はよくありません。このとき、2 つのチャー...

MySQL での正規表現置換のための replace と regexp の使用法の分析

この記事では、例を使用して、replace と regexp を使用して MySQL で正規表現を置...

ウェブフロントエンドウェブ開発の一般的なプロセスの簡単な紹介

フロントエンド開発を行っている初心者の学生を多く見かけますが、彼らの効率は比較的遅いです。常にコード...

複数ページ通信を実現する JavaScript の sharedWorker の詳細な例

こんなことがありました。今日はGitHubで遊んでいました。最初はログインせずにいくつかのページを閲...

カレンダーウィジェットのネイティブJS実装

この記事の例では、カレンダーウィジェットを実装するためのjsの具体的なコードを参考までに共有していま...