Mysql
 sql >> Base de données >  >> RDS >> Mysql

Mysql Union time V.S. séparer les requêtes une par une

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.