Est-ce que SQL a une différence de performance entre ces deux instructions?Requête SQL Server: union Union vs Distinct toutes les performances
SELECT distinct 'A' as TableName, Col1, Col2, Col3 FROM A
UNION ALL
SELECT distinct 'B' as TableName, Col1, Col2, Col3 from B
contre
SELECT 'A' as TableName, Col1, Col2, Col3 FROM A
UNION
SELECT 'B' as TableName, Col1, Col2, Col3 from B
La différence entre cela et des questions similaires telles que UNION vs DISTINCT in performance est que je peux confirmer à l'avance que les tables individuelles, je suis à l'aide n'aura pas les doublons entre eux, seulement dans les tables individuelles.
Les plans d'exécution me semblent identiques, car ils trie les tables individuelles avant de les concaténer. Cependant, si j'enlève le scalaire à tous les deux, le plan de l'UNION ALL reste fondamentalement le même mais l'UNION change pour concaténer avant le distinct. Je vais concaténer environ 20 tables ensemble, et il n'est pas clair si faire 20 DISTINCT individuels est plus rapide que de faire un grand DISTINCT à la fin, puisque je peux encore confirmer que les tables ne partagent pas de doublons entre eux (seulement dans le même table).
Mettez les deux requêtes en une session, activez le plan d'exécution et exécutez.Comparer les pourcentages dans le plan d'exécution réel – DimaSUN
C'est quelque chose que j'ai fait, mais je n'avais que quelques milliers d'enregistrements à la fois - pas assez pour tester la différence de temps d'exécution total, sans parler du nombre de lignes, du nombre de colonnes, types de données des colonnes, etc, pour obtenir une réponse générale. Et comme je l'ai dit, les plans d'exécution que j'ai exécutés se ressemblaient. Même si ce n'était pas le cas, l'un qui descend et l'autre qui monte ne signifie rien en ce qui concerne le temps d'exécution total. – WakeflyCBass