L'UNION
L'opérateur nécessite que les tuples (lignes) en double soient supprimés du jeu de résultats avant que les lignes ne soient renvoyées. C'est effectivement une opération SORT UNIQUE. C'est relativement peu coûteux pour les petits ensembles de résultats, mais pour les ensembles volumineux, cela peut nécessiter beaucoup de ressources sur le temps du serveur (c'est-à-dire prendre beaucoup de temps.)
En théorie, combiner les requêtes avec un UNION ALL
opérateur plutôt qu'un UNION
serait le plus rapide, puisqu'il éliminerait (n -1) allers-retours vers la base de données, vs exécution de requêtes séparément. Mais pour les grandes valeurs de n , vous allez rencontrer des limites pratiques sur la taille du texte SQL (taille maximale des paquets).
Etant donné le choix entre UNION
opérateur et requêtes séparées, pour un ensemble de résultats volumineux, les requêtes séparées vont consommer moins de ressources côté serveur.
En bref, c'est vraiment un compromis entre le gros du travail pour chaque requête et le gros du travail d'une opération SORT UNIQUE.