Bonjour,
Je viens de m'essayer à une petite requète, j'ai testé de ramener mes lignes en utilisant une fonction max et une fonction row_number....
mais je trouve que le temps d'exécution n'est pas du tout le même.
--Environ 40 s
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 select * from ( select cv_con_number, cv_number, row_number() over (partition by cv_con_number order by cv_number desc) as FL_ROW, CV_STATUS_CODE from CONTRACT_VERSIONS ) where FL_ROW = 1
--Environ 15 s
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 select * from ( select cv_con_number, cv_number, max(cv_number) over (partition by cv_con_number) as max_cv_number, CV_STATUS_CODE from CONTRACT_VERSIONS ) where max_cv_number = cv_number
Mes résultats sont identiques en terme de volumétrie. Mais j'aurais voulu avoir une explication sur le temps de traitement, est ce que l'une des fonctions est plus performante que l'autre, est ce que ca depend de la volumétrie, ou de certaines autres conditions ?
C'est pas vraiment un problème que je pose, je voudrais juste savoir aupres des experts en architecture oracle s'ils ont un moyen d'expliquer cela pour ma culture générale![]()
Un grand merci d'avance à ceux qui se pencheront sur le sujet.
Ha, et autre chose aussi :
Les fonctions analytiques ou cette jointure, lequel est le mieux en oracle ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 select * from CONTRACT_VERSIONS A where A.cv_number = ( select max(B.cv_number) from CONTRACT_VERSIONS B where A.cv_con_number = B.cv_con_number )
Partager