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は赤い封筒の順序と量を指定するアルゴリズムを実装します

推薦する

KTLツールはMySQLからMySQLへのデータの同期方法を実現します

ktl ツールを使用して、mysql から mysql にデータを同期します。 1. 新しいジョブス...

HTML でのテキストエリアの使用と一般的な問題およびケース分析

textarea タグはよく使われる HTML タグです。主に長いテキストを入力するときに改行するた...

MySQL 8.0.21 の最新バージョンのダウンロード、インストール、設定に関する詳細なチュートリアル

1. ダウンロード1. インストールパッケージをダウンロードするMySQL ダウンロード パス: h...

sql_mode を変更する際の MySQL エラーの解決方法

目次ERR 1067による殺人事件2番目の問題の原因はsql_modeです3. sql_modeを設...

WeChatミニプログラム抽選コンポーネントの使い方

WeChatコンポーネントの形式で提供されます。コンポーネント内部ではasync/awaitが使用さ...

Linux での Python のアップグレードと pip のインストールの詳細な説明

Linuxバージョンのアップグレード: 1. まず、Linuxオペレーティングシステムに付属するPy...

Nuxt.jsプロジェクトのDockerデプロイメントの実装

Docker 公式ドキュメント: https://docs.docker.com/ Docker は...

Alibaba Cloud サーバーの購入とインストール方法

1. サーバーを購入するこの例では、購入したサーバーはAlibaba Cloudです。大学生はAli...

CentOS8でのnmcliの使い方の詳しい説明

RHEL8/CentOS8 に基づく一般的な nmcli コマンド # IP を表示する (ifco...

JS オブジェクトのコピー (ディープ コピーとシャロー コピー)

目次1. 浅いコピー1. Object.assign(ターゲット、ソース、ソース...) 2. スプ...

VMware vSphere 6.7 (ESXI 6.7) のグラフィック インストール手順

環境: VMware VCSA 6.7 (VMware-VCSA-all-6.7.0-8169922...

Linux でユーザーを完全に削除する 2 つの方法

Linux 操作実験環境: Centos7 仮想マシンまず、共通ユーザーgubeiqingを作成しま...

JavaScript の高度なプログラミングの基本参照型

目次1. 日付2. 正規表現3. オリジナルパッケージタイプ序文:参照値(オブジェクト)は、 Dat...

パゴダパネルとドッカーを使用して Gogs をインストールするプロセス全体

目次1 Baota Software StoreにDockerをインストールする2 ゴグスイメージを...