SQL Explication simple et exemple


Exemple

En termes simples:

  • UNION joint 2 jeux de résultats tout en supprimant les doublons du jeu de résultats
  • UNION ALL joint 2 jeux de résultats sans tenter de supprimer les doublons

Une erreur commise par de nombreuses personnes consiste à utiliser un UNION sans avoir à supprimer les doublons. Le coût de performance supplémentaire par rapport aux ensembles de résultats importants peut être très important.

Quand vous avez besoin d' UNION

Supposons que vous deviez filtrer une table avec 2 attributs différents et que vous ayez créé des index non clusterisés distincts pour chaque colonne. Un UNION vous permet de tirer parti des deux index tout en empêchant les doublons.

SELECT C1, C2, C3 FROM Table1 WHERE C1 = @Param1
UNION
SELECT C1, C2, C3 FROM Table1 WHERE C2 = @Param2

Cela simplifie le réglage des performances car seuls des index simples sont nécessaires pour effectuer ces requêtes de manière optimale. Vous pourriez même être en mesure de vous débrouiller avec beaucoup moins d’index non clusterisés améliorant également les performances d’écriture globales par rapport à la table source.

Quand vous pourriez avoir besoin de UNION ALL

Supposons que vous ayez toujours besoin de filtrer une table avec 2 attributs, mais que vous n'avez pas besoin de filtrer les enregistrements en double (soit parce que vos données ne produiraient aucun doublon au cours de l'union).

SELECT C1 FROM Table1
UNION ALL
SELECT C1 FROM Table2

Cela est particulièrement utile lors de la création de vues qui associent des données conçues pour être partitionnées physiquement sur plusieurs tables (peut-être pour des raisons de performances, mais qui veulent toujours regrouper des enregistrements). Comme les données sont déjà divisées, le fait de supprimer les doublons du moteur de base de données n'ajoute aucune valeur et ajoute simplement du temps de traitement supplémentaire aux requêtes.