Salut,
je suis sur Oracle 10g , et j'aurais voulu juste une précision.
BoOn j'explique :
J'ai une requete (tres basique) dont le but est de faire une selection sur 1 critere , et de renvoyer les X 1eres lignes ( via un rownum) ordonnées !
Donc à priori la 1ere erreur ( ca je le savais mais c'est pas moi qui ai fait la requete ) ca a été de faire une requete du genre :
A priori le order by se fait apres le rownum donc pas bon du tout. (ouais j'ai pété des têtes parce que ca fait 6 mois que je le répete lol )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT ID FROM TABLE T where T.champs = XXXXXX and rownum <= 10 order by ID
Mes questions sont les suivantes :
- Chez moi , ca a toujours marché, d'ou j'en deduis que mon select rownum me les renvoies tjours dans le bon ordre , y'a t il une raison a ca ? ( a part le pif et la chance sur 6 mois )
- Je compte remplacer la requete par qq chose du genre (que j'utilise souvent en fait ) :
Ca marche, je teste sur une base toute petite donc les écarts de cout et de temps sont super négligeables. Mais selon vous est ce que le temps d'exécution peut en souffrir ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT ID FROM ( SELECT ID FROM TABLE T where T.champs = XXXXXX order by ID ) where rownum <= 10- là aussi c'est bon , je souhaiterais juste une confirmation ( j'ai comme un doute d'un coup [ouais c'est le matin ] ), est ce que je devrais pas écrire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT ID FROM ( SELECT ID FROM TABLE T where T.champs = XXXXXX order by ID ) where rownum <= 10 order by ID
Pour info je précise que mon "rownum" peut changer ( la valeur 10 est parametrable et peut passer de 10 à 50000 ou + selon les souhaits )
Partager