Je sais que dans les requêtes simples les performances et les plans d'exécution de la Distinct et Group By sont presque les mêmes.
par exemple
SELECT Name FROM NamesTable GROUP BY Name SELECT DISTINCT Name FROM NamesTable
Mais j'ai lu dans certains scénarios que leurs performances seraient différentes, par exemple dans les sous-requêtes, etc?
Alors, pourriez-vous faire quelques exemples ou expliquer des scénarios où leurs performances sont différentes?
Merci beaucoup
Si vous incluez une valeur calculée dans la list des champs, vous verrez une différence dans le plan d'exécution.
select Value, getdate() from YourTable group by UnitID select distinct Value, getdate() from YourTable
Le group by
requête agrège avant de calculer la valeur scalaire. La requête distinct
calcule la valeur scalaire avant l'agrégat.
Voici 2 exemples, l'un pour produire un résultat différent et l'autre pour une performance différente:
Et le deuxième exemple: