1559 votes

Quelle est la différence entre UNION et UNION ALL

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

1881voto

Jim Harte Points 1338

UNION supprime les doublons (où toutes les colonnes dans le résultat est le même), de l'UNION de TOUS ne pas.

Il y a un gain de performance lors de l'utilisation de l'UNION vs UNION, puisque le serveur de base de données doit faire des travaux pour supprimer les lignes en double, mais en général, vous ne voulez pas les doublons (en particulier lors de l'élaboration de rapports).

UNION Exemple:

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

Résultat:

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

L'UNION de TOUS exemple:

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

Résultat:

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

295voto

Bhaumik Patel Points 2063

À la fois de l'UNION et UNION ALL concaténer le résultat de deux types de Sql. Ils diffèrent dans leur façon de gérer les doublons.

-UNION effectue un DISTINCT sur l'ensemble de résultats, en éliminant les lignes en double.

-L'UNION de TOUS ne supprime pas les doublons, et il est donc plus rapide que de l'UNION.

Remarque: lorsque vous utilisez cette commande toutes les colonnes sélectionnées doivent être du même type de données. Exemple: Si nous avons deux tables, 1) et 2) le Client

1) Employé données de la table:

enter image description here

2) le Client les données de la table:

enter image description here

3) l'UNION Exemple (Il supprime tous les enregistrements en double):

enter image description here

4) l'UNION de TOUS Exemple (Il vient de concaténer des dossiers, de ne pas éliminer les doublons, de sorte qu'il est plus rapide que l'UNION):

enter image description here

51voto

mathewbutler Points 479

UNION supprime les doublons, alors que l'UNION de TOUS ne pas.

Afin de supprimer les doublons de l'ensemble de résultats doivent être triées, et cela peut avoir un impact sur les performances de l'UNION, selon le volume de données à trier, et les paramètres de différents SGBDR paramètres ( Pour Oracle PGA_AGGREGATE_TARGET avec WORKAREA_SIZE_POLICY=AUTO ou SORT_AREA_SIZE et SOR_AREA_RETAINED_SIZE si WORKAREA_SIZE_POLICY=MANUEL ).

Fondamentalement, le tri est plus rapide si elle peut être réalisée dans la mémoire, mais la même mise en garde sur le volume de données s'applique.

Bien sûr, si vous avez besoin de données retourné sans doublons, alors vous devez utiliser de l'UNION, selon la source de vos données.

J'aurais commenté sur le premier post pour qualifier les "est beaucoup moins performant" commentaire, mais de l'insuffisance de la réputation (points) de le faire.

31voto

Michiel Overeem Points 1750

Dans ORACLE : UNION ne supporte pas les types de colonnes BLOB (ou CLOB), UNION ALL fait.

25voto

George Mauer Points 22685
<blockquote> <p>La différence fondamentale entre l’UNION et UNION ALL est union opération élimine les lignes dupliquées de l’ensemble de résultats, mais tout syndicat renvoie toutes les lignes après avoir rejoint.</p> </blockquote> <p>de <a href="http://zengin.wordpress.com/2007/07/31/union-vs-union-all/">http://zengin.wordpress.com/2007/07/31/union-vs-union-all/</a></p>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X