Question Quelle est la différence entre UNION et UNION ALL?


Quelle est la différence entre UNION et UNION ALL?


1112
2017-09-08 15:19


origine


Réponses:


UNION supprime les enregistrements en double (où toutes les colonnes des résultats sont identiques), UNION ALL ne fait pas.

Il y a un coup de performance lors de l'utilisation UNION au lieu de UNION ALL, puisque le serveur de base de données doit faire un travail supplémentaire pour supprimer les lignes en double, mais généralement vous ne voulez pas les doublons (en particulier lors du développement de rapports).

UNION Exemple:

SELECT 'foo' AS bar UNION SELECT 'foo' AS bar

Résultat: 

+-----+
| bar |
+-----+
| foo |
+-----+
1 row in set (0.00 sec)

UNION TOUT exemple:

SELECT 'foo' AS bar UNION ALL SELECT 'foo' AS bar

Résultat:

+-----+
| bar |
+-----+
| foo |
| foo |
+-----+
2 rows in set (0.00 sec)

1371
2017-10-14 16:09



UNION et UNION ALL concaténent le résultat de deux SQL différents. Ils diffèrent dans la façon dont ils gèrent les doublons.

  • UNION effectue un DISTINCT sur le jeu de résultats, en éliminant les lignes en double.

  • UNION ALL ne supprime pas les doublons, et donc plus rapidement que UNION.

Remarque: Lors de l'utilisation de ces commandes, toutes les colonnes sélectionnées doivent avoir le même type de données.

Exemple: Si nous avons deux tables, 1) Employé et 2) Client

  1. Données de table d'employés:

enter image description here

  1. Données de table client:

enter image description here

  1. UNION Exemple (Supprime tous les enregistrements en double):

enter image description here

  1. UNION ALL Exemple (Il suffit de concaténer les enregistrements, pas d'éliminer les doublons, donc c'est plus rapide que UNION):

enter image description here


234
2017-09-18 12:34



UNION supprime les doublons, alors que UNION ALL ne fait pas.

Pour supprimer les doublons, le jeu de résultats doit être trié, et ceci mai ont un impact sur les performances de UNION, en fonction du volume de données triées et des paramètres de divers paramètres SGBDR (Pour Oracle PGA_AGGREGATE_TARGET avec WORKAREA_SIZE_POLICY=AUTO ou SORT_AREA_SIZE et SOR_AREA_RETAINED_SIZE si WORKAREA_SIZE_POLICY=MANUAL ).

Fondamentalement, le tri est plus rapide s'il peut être effectué en mémoire, mais la même mise en garde concernant le volume de données s'applique.

Bien sûr, si vous avez besoin de données retournées sans doublons alors vous doit utilisez UNION, en fonction de la source de vos données.

J'aurais commenté sur le premier post pour qualifier le commentaire «est beaucoup moins performant», mais n'a pas assez de réputation (points) pour le faire.


42
2017-09-08 17:10



Dans ORACLE: UNION ne prend pas en charge les types de colonne BLOB (ou CLOB), UNION ALL le fait.


27
2017-09-08 15:20



La différence fondamentale entre UNION et UNION ALL est que l'opération d'union élimine les lignes dupliquées du jeu de résultats, mais union tout renvoie toutes les lignes après la jointure.

de http://zengin.wordpress.com/2007/07/31/union-vs-union-all/


18
2017-08-13 00:03



Vous pouvez éviter les doublons et continuer à fonctionner beaucoup plus rapidement que UNION DISTINCT (qui est en fait la même chose que UNION) en exécutant une requête comme celle-ci:

SELECT * FROM mytable WHERE a=X UNION ALL SELECT * FROM mytable WHERE b=Y AND a!=X

Notez le AND a!=X partie. C'est beaucoup plus rapide que l'union.


12
2018-06-06 09:55



Juste pour ajouter mes deux cents à la discussion ici: on pourrait comprendre le UNION l'opérateur en tant que UNION pure orientée SET - par ex. mettre A = {2,4,6,8}, mettre B = {1,2,3,4}, UNION B = {1,2,3,4,6,8}

En traitant des ensembles, vous ne voudriez pas que les nombres 2 et 4 apparaissent deux fois, en tant qu'élément est ou n'est pas dans un ensemble.

Dans le monde de SQL, cependant, vous pourriez vouloir voir tous les éléments des deux ensembles ensemble dans un "sac" {2,4,6,8,1,2,3,4}. Et à cet effet, T-SQL offre l'opérateur UNION ALL.


12
2017-08-16 16:50



SYNDICAT
le UNION commande est utilisée pour sélectionner des informations connexes à partir de deux tables, un peu comme le JOIN commander. Cependant, lorsque vous utilisez le UNION commande toutes les colonnes sélectionnées doivent être du même type de données. Avec UNION, seules les valeurs distinctes sont sélectionnées.

UNION TOUS
le UNION ALL commande est égale à la UNION commande, sauf que UNION ALL sélectionne toutes les valeurs.

La différence entre Union et Union all est-ce Union all n'élimine pas les lignes dupliquées, mais extrait simplement toutes les lignes de toutes les tables qui correspondent aux spécificités de la requête et les combine dans une table.

UNE UNION déclaration fait effectivement un SELECT DISTINCT sur l'ensemble des résultats. Si vous savez que tous les enregistrements retournés sont uniques à votre syndicat, utilisez UNION ALL au lieu de cela, il donne des résultats plus rapides.


9
2017-09-08 15:43



Pas sûr que cela importe quelle base de données

UNION et UNION ALL devrait fonctionner sur tous les serveurs SQL.

Vous devriez éviter d'inutiles UNIONs ils sont énormes fuite de performance. En règle générale, utilisez le pouce UNION ALL si vous n'êtes pas sûr de savoir lequel utiliser.


6
2018-06-15 10:42



union est utilisé pour sélectionner des valeurs distinctes à partir de deux tables où comme union tout est utilisé pour sélectionner toutes les valeurs, y compris doublons des tables


5
2018-04-12 08:34



(À partir de Microsoft SQL Server Book Online)

UNION [TOUT] 

Indique que plusieurs jeux de résultats doivent être combinés et renvoyés en tant que jeu de résultats unique.

TOUT 

Incorpore toutes les lignes dans les résultats. Cela inclut les doublons. Si non spécifié, les lignes en double sont supprimées.

UNION prendra trop de temps comme un doublon lignes comme DISTINCT est appliqué sur les résultats.

SELECT * FROM Table1
UNION
SELECT * FROM Table2

est équivalent à:

SELECT DISTINCT * FROM (
    SELECT * FROM Table1
    UNION ALL
    SELECT * FROM Table2) DT

Un effet secondaire de l'application DISTINCT plus de résultats est un opération de tri sur les résultats.

UNION ALL les résultats seront affichés arbitraire ordre sur les résultats Mais UNION les résultats seront affichés ORDER BY 1, 2, 3, ..., n (n = column number of Tables) appliqué sur les résultats. Vous pouvez voir cet effet secondaire lorsque vous n'avez pas de ligne en double.


5
2018-05-17 05:59