SQL Server Union vs Union All

Union et Union All permettent de combiner deux jeux de résultats ou plus en SQL. Un opérateur d'un ensemble d'union est différent des jointures SQL. Union combine deux ensembles alors que SQL Joins combine deux colonnes ou plus en fonction d'une condition de ligne correspondante. Ce tutoriel décrit les différences entre Union et Union All en fonction de la fonction et des performances.

Union Tous

1. Union All est utilisé pour combiner deux jeux de résultats ou plus en un seul.
2. Union Toutes inclut les doublons de deux jeux de résultats ou plus.

syndicat

1. Union est utilisé pour combiner deux jeux de résultats ou plus en un seul.
2. Union supprime les doublons d'au moins deux ensembles de résultats.
3. Union trie également les jeux de résultats par ordre croissant.

Exemple: Union vs Union All

CREATE TABLE dbo.Batsman (PK_Batman_Id INT, nom VARCHAR (255)); CREATE TABLE dbo.Bowler (PK_Bowler_Id INT, nom VARCHAR (255)); Insérer dans dbo.Batsman VALUES (1, 'Sachin Tendulkar'); Insérer dans dbo.Batsman VALUES (2, 'Rahul Dravid'); Insérer dans dbo.Batsman VALUES (3, 'Brian Lara'); Insérer dans dbo.Batsman VALUES (4, 'MS Dhoni'); Insérer dans dbo.Bowler VALUES (1, 'Sachin Tendulkar'); Insérer dans dbo.Bowler VALUES (2, 'Rahul Dravid'); SELECT * FROM Batsman; SELECT * FROM Bowler; 

Union All Set Operation

SELECT Nom en tant que joueur FROM dbo.Batsman UNION ALL SELECT Nom en tant que Player FROM dbo.Bowler; 
Résultat Player ------------------- Sachin Tendulkar Rahul Dravid Brian Lara MS Dhoni Sachin Tendulkar Rahul Dravid (6 rangée (s) affectée (s)) 

La requête ci-dessus combine deux ensembles de résultats des tables dbo.Batsman et dbo.Bowler et affiche les noms en double qui apparaissent dans les deux tables.

Union Set Operation

SELECT Nom en tant que joueur FROM dbo.Batsman UNION SELECT Nom en tant que Player FROM dbo.Bowler; 
Résultat Joueur ------------------- Brian Lara MS Dhoni Rahul Dravid Sachin Tendulkar (4 rangée (s) affectée (s)) 

La requête ci-dessus combine deux jeux de résultats des tables dbo.Batsman et dbo.Bowler sans doublons. Le résultat est trié par ordre croissant.

Performance: Union vs Union All

Comme vous le voyez, Union All utilise 27% de l'exécution par lots et Union utilise 73% de l'exécution par lots.

Dans ce cas, Union All est plus rapide que Union car Union All ne supprime pas les doublons et ne trie pas le jeu de résultats, tandis que Union supprime les doublons et trie le jeu de résultats (ce qui nécessite plus de temps et moins de performances). L'opérateur de tri distinct du plan d'exécution indique que Union effectue le tri du jeu d'entrées.

Meilleur entrainement

Lorsque nous savons que des enregistrements en double ne sont pas possibles dans un ou plusieurs ensembles, utiliser Union All Over Union est bénéfique pour éviter un impact négatif sur les performances.