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 でアクセス頻度、ダウンロード速度、同時接続数を制限する方法

推薦する

Vue で @person 関数を実装する方法

この記事ではvueを使用し、マウスクリックイベントといくつかの小さなページの最適化を追加します。 基...

Vueのカスタムディレクティブの詳細なガイド

目次1. カスタム指示とは何ですか? 2. 指示をカスタマイズする方法フック機能3. 応用シナリオ入...

Linux でファイル内の特定の文字の数を数える方法

ファイル内の文字列の数を数えることは、実際には砂の中の石を探すようなものです。ある人は、石を見た後に...

2013年のウェブデザインUIの最もホットなトレンド最も人気のあるUIデザイン

時は経つのが早く、わずか 6 日後には 2013 年が歴史になります。今年は、いわゆるトレンドが多す...

DockerでPrometheusをインストールする詳細なチュートリアル

目次1. Node Exporterをインストールする2. cAdvisorをインストールする3. ...

vue2 vue3 での Echarts の詳細な使用方法

目次1. インストール2. vue2でEchartsを使用するmain.jsファイル内コンテナが与え...

CSS を使用して複数列の等高レイアウトを設定する方法の例

最初は、複数の列のコンテンツのサイズと高さが異なります。ここで、表示する背景を異なるものに設定し、各...

MySQL インデックスの長さ制限の原理の分析

この記事は主に、MySQL インデックスの長さ制限の原理の分析を紹介します。サンプル コードを通じて...

仮想マシンUbuntu 16.04がインターネットに接続できない問題の解決策

Ubuntu をインストールしたばかりですが、開いたときにネットワーク接続がありませんでした。右上隅...

MySQL テーブル分割後にスムーズにオンラインになる方法

目次テーブルの目的例えばテーブル分割戦略すでにオンラインになっている実行中のテーブルはどうすればよい...

MySQL データベースの必須条件クエリ ステートメント

目次1. 基本的な文法2. 条件式によるフィルタリング3. 論理式によるフィルタリング4. あいまい...

MySQL ストレージエンジンの簡単な紹介

1. MySQL アーキテクチャストレージ エンジンを紹介する前に、まずは MySQL アーキテクチ...

MySQL での外部キーの作成、制約、削除

序文MySQL バージョン 3.23.44 以降では、InnoDB エンジン タイプのテーブルは外部...

MySQL をクリーンにアンインストールする方法 (テスト済みで効果的)

Mysql を完全にアンインストールするにはどうすればいいですか?以下の手順に従って実行してくださ...

JSX を使用してカルーセル コンポーネントを実装する方法 (フロントエンドのコンポーネント化)

JSX を使用してコンポーネント システムを構築する前に、例を使用してコンポーネントの実装原理とロ...