|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre chevronné
![]() ![]() Inscription : juillet 2006 Messages : 1 194 ![]() |
J'ai pu constater dans certains cas assez voire très rares et alors que l'on récupère des lignes qui sont toutes uniques, l'emploie de DISTINCT améliorait les performance (et ce de façon très importante).
Je n'ai pas d'explication (j'ai pourtant cherché) mais dans les changements que l'emploie de DISTINCT provoque dans le query plan, tant à l'exécution du plan qu'à son estimation (et c'est là que c'est fou*) il y a un gouffre de performance à l'avantage de l'emploie de DISTINCT. Cela est tout à fait anormal mais c'est bon à savoir (surtout que vous ne lirez pas ceci partout) car puisque ne coûtant que 8 lettre, on peut se permettre d'expérimenté sur nos query les plus complexes (et peut-être avoir de plaisantes surprises). * SQL Server établit plusieurs plans selon son IA et en retient le meilleur candidat. |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 954 ![]() |
Ce comportement est normal s'il existe un index couvrant par rapport à la clause SELECT.
Lisez les article que j'ai écrit à ce sujet et notamment "que faut-il indexer". A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#3 |
|
Membre chevronné
![]() ![]() Inscription : juillet 2006 Messages : 1 194 ![]() |
|
|
|
00
|
|
|
#4 |
![]() ![]() ![]() David BARBARINExpert SQL Server Inscription : août 2005 Messages : 3 723 ![]() |
Je suis bien prêt à vous croire mais il faudrait pouvoir au moins avoir un exemple avec la requete et les plans d'exécutions ....
++ |
|
00
|
|
|
#5 | ||
|
Membre Expert
![]() |
Parlez vous de cas d'utilisation de distinct dans des sous-tables du SELECT comme ci-dessous?
Code :
Je pense personnellement que les (le?) cas que vous avez rencontré montre un manque de statistique correct(ou manque de mise à jour de celles-ci) ou de contraintes manquantes empêchant SQL Server de correctement évaluer le nombre de ligne à traiter...
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com