mysql 実行プラン ID が空である (UNION キーワード) の詳細な説明

mysql 実行プラン ID が空である (UNION キーワード) の詳細な説明

導入

作業プロセス中に、遅いクエリが調整されることがあります。 MySQL SQL ステートメントのチューニングについては、MySQL 自体がクエリ分析と実行プランのための強力な explain キーワードを提供します。この記事は主にMySQL実行プランIDが空であること(UNIONキーワード)に関する関連内容を紹介し、皆さんの参考と勉強のために共有します。詳しい紹介を見てみましょう。

UNION 演算子は、2 つ以上の SELECT ステートメントの結果セットを結合するために使用されます。たとえば、2 つのテーブルがあるとします。テーブル 1 には、会社の男性従業員の年齢、名前、役職などのデータが記録されています。表 2 には、名前、自宅住所、携帯電話番号などのフィールドを含む、会社内の女性従業員のデータが記録されています。今回は、特定の条件に基づいて 2 つのテーブル内の名前のコレクションをクエリします。 UNION キーワードが使用されます。

UNION は複数のフィールドをクエリできますが、SELECT ステートメントには同じ数の列が必要です。列も同様のデータ型である必要があります。また、各 SELECT ステートメント内の列の順序は同じである必要があります。

文法

 table_name1 から column_name を選択
 連合
 table_name2 から column_name を選択する

UNION 演算子は結果セットの重複を排除します。重複値が許容される場合は、UNION ALL を使用できます。重複排除機能以外に、両者の間に違いはありません。


ここでの例では、導入に基づいて 2 つのテーブルを作成し、対応する操作を実行します。

まず、user1 と user2 の 2 つのテーブルを作成します。テーブル作成ステートメントは次のとおりです。

-- テーブルステートメントの作成 CREATE TABLE user1 (
 id INT、
 年齢 INT、
 名前 VARCHAR (5)、
 位置 VARCHAR (8)
);
テーブルuser2を作成します(
 id INT、
 名前 VARCHAR(5)、
 住所 VARCHAR(50)、
 電話番号 VARCHAR(20)
)

次に、対応するデータを挿入します。SQL は次のようになります。

-- データ挿入ステートメント INSERT INTO user1
価値観
 (
  1、
  20,
  「張三」
  「テクニカルディレクター」
 );

ユーザー1に挿入
価値観
 (
  2、
  20,
  「李斯」、
  「プロダクトマネージャー」
 );

ユーザー1に挿入
価値観
 (
  3、
  20,
  「王武」、
  「オペレーションディレクター」
 );

ユーザー1に挿入
価値観
 (
  4、
  20,
  「趙劉」、
  「物流マネージャー」
 ) ユーザー2に挿入 (
  id、
  名前、
  住所、
  電話番号
 )
価値観
 (
  1、
  「真真」、
  '北京'、
  '155332211'
 );

ユーザー2に挿入(
 id、
 名前、
 住所、
 電話番号
)
価値観
 (
  2、
  「リアンリアン」
  '上海'、
  '155332211'
 );

ユーザー2に挿入(
 id、
 名前、
 住所、
 電話番号
)
価値観
 (
  3、
  「愛してる」、
  「深セン」、
  '155332211'
 );

最後にUNION文を実行してクエリを実行します。

 -- UNION ステートメント SELECT NAME FROM user1
 連合
 ユーザー2から名前を選択

コードを実行すると、結果は次のようになります。

ここでの結果セットの列名は、UNION ステートメントの最初の SELECT ステートメントの列名です (user1 は NAME、user2 は name)。

説明時にidはnullです

UNION 実行プランを実行すると、結果セットをマージする最後の操作の実行 ID が null になります。また、最初の実行の select_type は単純なクエリ、2 番目以降のクエリは UNION、最後のマージの select_type は UNION RESULT です。

実行プランのコードは次のとおりです。

EXPLAIN SELECT NAME FROM user1
連合
ユーザー2から名前を選択

結果は次のとおりです。

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。

以下もご興味があるかもしれません:
  • MySQL実行計画の詳細な説明
  • MySQL での実行計画の詳細分析
  • MySQL実行計画の詳細な分析
  • EXPLAIN を使って MySQL の SQL 実行プランを分析する方法
  • MySQL での実行計画の explain コマンド例の詳細な説明
  • MySql で SQL 実行プランをクエリするために explain を使用する方法
  • MySQL 実行計画の紹介
  • MYSQL 実行プランの説明
  • MySQL実行計画を学ぶ

<<:  JS でシングルトン モードを実装するための 6 つのソリューションの概要

>>:  Nginx でアクセス頻度、ダウンロード速度、同時接続数を制限する方法

推薦する

Tomcat 経由で JMX 監視を有効にする方法

シミュレーション環境を構築する:オペレーティングシステム: centos7メモリ: 1G 1.8.0...

MySql の知識ポイント: トランザクション、インデックス、ロックの原則、使用状況の分析

この記事では、トランザクション、インデックス、ロックなどの MySQL の知識ポイントの原理と使用法...

2 つの Linux サーバー間の自動ファイル同期

サーバーB(172.17.166.11)の電源がオンまたは再起動されると、サーバーA(172.17....

HTML+CSSプロジェクト開発経験概要(推奨)

ここ数日ブログを更新していませんでした。簡単な HTML+CSS プロジェクトを終えたところです。数...

Ubuntu で .sh ファイルを実行するいくつかの方法の違いについて簡単に説明します。

序文特に bash 環境では、スクリプトの実行方法によって結果が異なります。スクリプトを実行する方法...

JavaScript配列の一般的なメソッドの概要

目次1. JavaScriptで配列を作成する方法2. 配列メソッドの概要3. 方法の詳細な説明1....

MySQL ストアド プロシージャの作成、呼び出し、管理の詳細な説明

目次ストアドプロシージャの概要ストアド プロシージャを使用する理由は何ですか?ストアドプロシージャの...

WindowsにOpenSSLをインストールし、OpenSSLを使用して公開鍵と秘密鍵を生成します。

1. OpenSSL公式サイト公式ダウンロードアドレス: https://www.openssl....

CentOS7でルートパスワードをリセットする方法

レンガを移動するプロセスでは、さまざまな環境および構成の問題があり、毎回異なるエラーが発生します。 ...

WeChatミニプログラムはどのようにしてユーザー情報とユーザーの電話番号を同時に取得するのか

今日ログインページを書いていたとき、個人情報と携帯電話番号を認証する必要がありましたが、ページにボタ...

JavaScript 構造化代入の詳細な説明

目次コンセプト配列の分割値を個別に宣言して割り当てるデフォルト値の構造化解除変数値の交換関数によって...

MySQL 8.0 redo ログの詳細な分析

目次序文REDOログの生成REDOログ送信REDOログの保存と通知ユーザースレッドに通知要約する序文...

Javascript と Vue を組み合わせて、あらゆる迷路画像の自動パス検索を実現します。

目次序文2次元配列、一方向基本インターフェースのマッピング幅優先、包括的検索マップ編集経路探索アルゴ...

CentOS7 で ethereum/Ethereum を最初からインストールする

目次序文sudo書き込み権限を追加するgit 2.9.0をインストールopenssl 1.1.1l ...

Pythonで書かれたWebアプリケーションをDockerでデプロイする実践

目次1. Dockerをインストールする2. コードを書く3. Dockerfileを書く4. 画像...