By:Greg Robidoux|Updated:2019-10-29|Comments(4)/Related: 1 | 2 | 3 | 4 | 5 | More>JOIN Tables
Problem
複数のテーブルまたはビューのデータを一つの包括的なデータセットに結合する必要がある場合があります。 このテーブルと同様のデータのsamedatabaseはん、ありがとうございますので両方に類似データのデータベースまたはevenacrossます。
このヒントでは、UNIONコマンドとUNIONALLコマンドの使い方とそれらの違いを見ていきます。,
ソリューション
SQL Serverでは、UNIONまたはUNION ALL演算子を使用して、複数のデータセットを一つの包括的なデータセットに結合することができます。 これらの作業と返される最終的な結果セットには大きな違いがありますが、基本的にこれらのコマンドは、類似した構造を持つ複数のデータセットを一つの組み合わせたデータセットに結合します。
UNION
この操作では、multipledatasetsを一つのデータセットに結合し、存在する重複を削除できます。 基本的には、結果セット内のすべての列にわたって個別の操作を実行しています。,
UNION ALL
この操作では、データセットを一つのデータセットに結合することができますが、重複する行は削除されません。これは重複した行を削除しないため、このプロセスは高速ですが、重複したレコードが必要ない場合は、代わりにUNION演算子を使用する必要があります。,Hクエリは同じ数の列を持つ必要があります
ヒント:すべてのクエリでまったく同じ列がない場合は、次のように使用します。次のようなデフォルト値またはnull値
SELECT firstName, lastName, company FROM businessContactsUNIONSELECT firstName, lastName, NULL FROM nonBusinessContactsorSELECT firstName, lastName, createDate FROM businessContactsUNION ALLSELECT firstName, lastName, getdate() FROM nonBusinessContacts
union vs., UNION ALL Examples
これらのコマンドがどのように機能するか、どのように異なるかの簡単な例をいくつか見てみましょう。 最終的な結果セットは異なりますが、SQL Serverが実際にプロセスをどのように完了するかについての興味深い情報があります。
UNION ALL
この最初の例では、AdventureWorksデータベースのEmployeetableに対してUNION ALL演算子を使用しています。 これはおそらくあなたがwoulddo何かではありませんが、これはこれら二つの演算子の違いを説明するのに役立
テーブルdboには290行があります。従業員。,
SELECT * FROM HumanResources.EmployeeUNION ALLSELECT * FROM HumanResources.EmployeeUNION ALLSELECT * FROM HumanResources.Employee
このクエリを実行すると、結果セットには870行があります。 これは290行返された3回です。 データは、あるデータセットを他のデータセットの上にまとめます。
このクエリの実行計画は次のとおりです。 テーブルが3回クエリされ、SQL Serverがすべてのデータを連結するための連結手順を実行したことがわかります。
UNION
この次の例では、AdventureWorksデータベースのEmployee tableagainに対してUNION演算子を使用しています。,
SELECT * FROM HumanResources.EmployeeUNIONSELECT * FROM HumanResources.EmployeeUNIONSELECT * FROM HumanResources.Employee
このクエリを実行すると、結果セットに290行があります。 私たちはTHEDATAを三回組み合わせたにもかかわらず、UNION演算子は重複レコードを削除し、そのため290の一意の行だけを返します。
このクエリの実行計画は次のとおりです。 私たちは、SQL Serverが最初にテーブルのqueried2を見ることができ、その後、最初の二つのテーブルを結合するためにマージ結合操作を行い、それがクエリ内の第三のテーブルをクエリと一緒に別のマージ結合を行いました。,したがって、UNION ALLと比較して、このresultsetを取得するために実行する必要がある作業がはるかに多くあることがわかります。
UNION vs.UNIONクラスタ化インデックス列のソートを持つすべての例
これをさらに一歩踏み出し、ClusteredIndex列を使用してデータの並べ替えを行うと、これらの実行 このことから、sql Serverが使用しているexecutionplanは、最終結果セットにはUNION ALLの870行とUNIONの290行が含まれますが、これらの操作ごとに同じであることがわかります。,
クラスタ化インデックス列のソートを持つUNIONすべての実行計画
クラスタ化インデックス列のソートを持つUNION実行計画
UNION vs.UNIONすべての例では、インデックス化されていない列のソートを持つ
ここでは、同じことを行う別の例がありますが、今回は同じことをしていますが、今回は同じことをしています。anonインデックス付き列でソートを行います。 ご覧のとおり、実行プランはこれらのクエリでも同じですが、今回はマージ結合を使用する代わりに、連結とソートオペレーションが使用されます。,
- union演算子を使用するのに役立つかもしれないこれらの他のヒントを見てみましょう
- 複数のデータセットをINTERSECTand EXCEPT演算子と比較する
- SQL Server四部名前付け
- UNION
最終更新:2019-10-29
著者について
すべての私のヒントを表示
Leave a Reply