Est-il possible via une requête d'afficher les 50 premiers enregistrements sous ORACLE ?
...where rownum < 51
Par contre le rownum s'execute avec un order by et avant un group by :-(
et oui, c'est le truc incompréhensible de Oracle; Pas de LIMIT ou de TOP. Alors il faut faire un select sur le select
SELECT * from (select COLA,COLB,COLB FROM TABLE ORDER BY COLB) where rownum<51
Autre Solution Oracle4WD qui gère les "limites" au sens MySQL.
-- Eric Roumégou http://cerbermail.com/?TSoulBerPA (cliquez sur le lien ci-dessus pour me contacter en privé)
Manu
> Après mure réflexion, elecoest a écrit :
"Yves" a écrit dans le message de news:
Est-il possible via une requête d'afficher les 50 premiers enregistrements sous ORACLE ?
...where rownum < 51
Par contre le rownum s'execute avec un order by et avant un group by :-(
et oui, c'est le truc incompréhensible de Oracle; Pas de LIMIT ou de TOP.
Pourquoi incompréhensible alors que nous sommes dans l'air du tout ensembliste ? J'avais un programme écrit en ancienne mode : je lis d'un coté, j'écris de l'autre et je commit assez souvent pour ne pas remplir le RBS : 35 heures pour générer 8 millions de lignes à partir de 2 millions avec un algo costo entre les 2. Un "expert" 8i est venu, on a passé le biniou en ensembliste (tout en requete) on est passé à moins de 6 heures.
Pour faire l'analogie, c'est le même rapport que l'on peut avoir entre un programme écrit en hxxx et à partir de requetes. Par contre, pour revenir à mon cas, nous avons du créer des tables temporaires dites de travail. Pourquoi cette remarque ? Tout simplement pour dire que l'on ne peut pas _tout_ faire en 1 seule requete.
@+
> Après mure réflexion, elecoest a écrit :
"Yves" <yves@obazar.ch> a écrit dans le message de news:
40f56b13_3@news.bluewin.ch...
Est-il possible via une requête d'afficher les 50 premiers
enregistrements sous ORACLE ?
...where rownum < 51
Par contre le rownum s'execute avec un order by et avant un group by
:-(
et oui, c'est le truc incompréhensible de Oracle; Pas de LIMIT ou de
TOP.
Pourquoi incompréhensible alors que nous sommes dans l'air du tout
ensembliste ?
J'avais un programme écrit en ancienne mode : je lis d'un coté, j'écris de
l'autre et je commit assez souvent pour ne pas remplir le RBS : 35 heures
pour générer 8 millions de lignes à partir de 2 millions avec un algo costo
entre les 2. Un "expert" 8i est venu, on a passé le biniou en ensembliste
(tout en requete) on est passé à moins de 6 heures.
Pour faire l'analogie, c'est le même rapport que l'on peut avoir entre un
programme écrit en hxxx et à partir de requetes. Par contre, pour revenir à
mon cas, nous avons du créer des tables temporaires dites de travail.
Pourquoi cette remarque ? Tout simplement pour dire que l'on ne peut pas
_tout_ faire en 1 seule requete.
Est-il possible via une requête d'afficher les 50 premiers enregistrements sous ORACLE ?
...where rownum < 51
Par contre le rownum s'execute avec un order by et avant un group by :-(
et oui, c'est le truc incompréhensible de Oracle; Pas de LIMIT ou de TOP.
Pourquoi incompréhensible alors que nous sommes dans l'air du tout ensembliste ? J'avais un programme écrit en ancienne mode : je lis d'un coté, j'écris de l'autre et je commit assez souvent pour ne pas remplir le RBS : 35 heures pour générer 8 millions de lignes à partir de 2 millions avec un algo costo entre les 2. Un "expert" 8i est venu, on a passé le biniou en ensembliste (tout en requete) on est passé à moins de 6 heures.
Pour faire l'analogie, c'est le même rapport que l'on peut avoir entre un programme écrit en hxxx et à partir de requetes. Par contre, pour revenir à mon cas, nous avons du créer des tables temporaires dites de travail. Pourquoi cette remarque ? Tout simplement pour dire que l'on ne peut pas _tout_ faire en 1 seule requete.
@+
Phil
> programme écrit en hxxx et à partir de requetes. Par contre, pour revenir
à
mon cas, nous avons du créer des tables temporaires dites de travail. Pourquoi cette remarque ? Tout simplement pour dire que l'on ne peut pas _tout_ faire en 1 seule requete.
Bonjour,
J'ai bien apprécié cette déclaration. Après presque 25 ans de métier comme concepteur, on a forcément une perception plus "détaillée" de la programmation puisqu'on a connu dès le départ des contraintes de toutes sortes avec très peu d'outils pour travailler.
J'ai souvent vu des exemples de requêtes sur ce forum qui englobent tout d'une seule traite et j'avais des doutes à chaque fois. Pourquoi? Parce que même en FoxPro dont les requêtes SQL sont d'une vitesse époustouflantes à l'origine, nous avons dû dans de nombreux cas (par fanatisme de vitesse sur de grandes quantités) disséquer les requêtes en plusieurs étapes avec l'utilisation de fichiers temporaires afin d'obtenir des gains de vitesse considérable.
Par exemple, une opération complexe de 50 minutes qui passe à 2 minutes. Nous avons même eu une opération de traitement de grandes quantités il y a plusieurs années (sur des 80286) qui est passé de plus de 2 heures en moins de 20 secondes - juste en séparant les étapes dans des fichiers temporaires avec quelques nouveaux index bien placés. La commande SQL d'origine avait été conçu par un jeune programmeur et était tout à fait techniquement correcte... écrite d'une seule traite.
Nouveau en Windev 8 (que j'apprécie de plus en plus), je suis ravi de constater que les bonnes vieilles méthodes d'optimisation acquises en SQL de FoxPro seront encore applicables en WD8.
"Manu" a écrit dans le message de news:cd55c2$63i$
> Après mure réflexion, elecoest a écrit : >> "Yves" a écrit dans le message de news: >> >>> Est-il possible via une requête d'afficher les 50 premiers >>> enregistrements sous ORACLE ? >> >> ...where rownum < 51 >> >> Par contre le rownum s'execute avec un order by et avant un group by >> :-( > > et oui, c'est le truc incompréhensible de Oracle; Pas de LIMIT ou de > TOP.
Pourquoi incompréhensible alors que nous sommes dans l'air du tout ensembliste ? J'avais un programme écrit en ancienne mode : je lis d'un coté, j'écris de l'autre et je commit assez souvent pour ne pas remplir le RBS : 35 heures pour générer 8 millions de lignes à partir de 2 millions avec un algo
costo
entre les 2. Un "expert" 8i est venu, on a passé le biniou en ensembliste (tout en requete) on est passé à moins de 6 heures.
Pour faire l'analogie, c'est le même rapport que l'on peut avoir entre un programme écrit en hxxx et à partir de requetes. Par contre, pour revenir
à
mon cas, nous avons du créer des tables temporaires dites de travail. Pourquoi cette remarque ? Tout simplement pour dire que l'on ne peut pas _tout_ faire en 1 seule requete.
@+
> programme écrit en hxxx et à partir de requetes. Par contre, pour revenir
à
mon cas, nous avons du créer des tables temporaires dites de travail.
Pourquoi cette remarque ? Tout simplement pour dire que l'on ne peut pas
_tout_ faire en 1 seule requete.
Bonjour,
J'ai bien apprécié cette déclaration.
Après presque 25 ans de métier comme concepteur, on a forcément une
perception plus "détaillée" de la programmation puisqu'on a connu dès le
départ des contraintes de toutes sortes avec très peu d'outils pour
travailler.
J'ai souvent vu des exemples de requêtes sur ce forum qui englobent tout
d'une seule traite et j'avais des doutes à chaque fois. Pourquoi? Parce que
même en FoxPro dont les requêtes SQL sont d'une vitesse époustouflantes à
l'origine, nous avons dû dans de nombreux cas (par fanatisme de vitesse sur
de grandes quantités) disséquer les requêtes en plusieurs étapes avec
l'utilisation de fichiers temporaires afin d'obtenir des gains de vitesse
considérable.
Par exemple, une opération complexe de 50 minutes qui passe à 2 minutes.
Nous avons même eu une opération de traitement de grandes quantités il y a
plusieurs années (sur des 80286) qui est passé de plus de 2 heures en moins
de 20 secondes - juste en séparant les étapes dans des fichiers temporaires
avec quelques nouveaux index bien placés. La commande SQL d'origine avait
été conçu par un jeune programmeur et était tout à fait techniquement
correcte... écrite d'une seule traite.
Nouveau en Windev 8 (que j'apprécie de plus en plus), je suis ravi de
constater que les bonnes vieilles méthodes d'optimisation acquises en SQL de
FoxPro seront encore applicables en WD8.
"Manu" <el@netcourrier.com> a écrit dans le message de
news:cd55c2$63i$1@reader1.imaginet.fr...
> Après mure réflexion, elecoest a écrit :
>> "Yves" <yves@obazar.ch> a écrit dans le message de news:
>> 40f56b13_3@news.bluewin.ch...
>>> Est-il possible via une requête d'afficher les 50 premiers
>>> enregistrements sous ORACLE ?
>>
>> ...where rownum < 51
>>
>> Par contre le rownum s'execute avec un order by et avant un group by
>> :-(
>
> et oui, c'est le truc incompréhensible de Oracle; Pas de LIMIT ou de
> TOP.
Pourquoi incompréhensible alors que nous sommes dans l'air du tout
ensembliste ?
J'avais un programme écrit en ancienne mode : je lis d'un coté, j'écris de
l'autre et je commit assez souvent pour ne pas remplir le RBS : 35 heures
pour générer 8 millions de lignes à partir de 2 millions avec un algo
costo
entre les 2. Un "expert" 8i est venu, on a passé le biniou en ensembliste
(tout en requete) on est passé à moins de 6 heures.
Pour faire l'analogie, c'est le même rapport que l'on peut avoir entre un
programme écrit en hxxx et à partir de requetes. Par contre, pour revenir
à
mon cas, nous avons du créer des tables temporaires dites de travail.
Pourquoi cette remarque ? Tout simplement pour dire que l'on ne peut pas
_tout_ faire en 1 seule requete.
> programme écrit en hxxx et à partir de requetes. Par contre, pour revenir
à
mon cas, nous avons du créer des tables temporaires dites de travail. Pourquoi cette remarque ? Tout simplement pour dire que l'on ne peut pas _tout_ faire en 1 seule requete.
Bonjour,
J'ai bien apprécié cette déclaration. Après presque 25 ans de métier comme concepteur, on a forcément une perception plus "détaillée" de la programmation puisqu'on a connu dès le départ des contraintes de toutes sortes avec très peu d'outils pour travailler.
J'ai souvent vu des exemples de requêtes sur ce forum qui englobent tout d'une seule traite et j'avais des doutes à chaque fois. Pourquoi? Parce que même en FoxPro dont les requêtes SQL sont d'une vitesse époustouflantes à l'origine, nous avons dû dans de nombreux cas (par fanatisme de vitesse sur de grandes quantités) disséquer les requêtes en plusieurs étapes avec l'utilisation de fichiers temporaires afin d'obtenir des gains de vitesse considérable.
Par exemple, une opération complexe de 50 minutes qui passe à 2 minutes. Nous avons même eu une opération de traitement de grandes quantités il y a plusieurs années (sur des 80286) qui est passé de plus de 2 heures en moins de 20 secondes - juste en séparant les étapes dans des fichiers temporaires avec quelques nouveaux index bien placés. La commande SQL d'origine avait été conçu par un jeune programmeur et était tout à fait techniquement correcte... écrite d'une seule traite.
Nouveau en Windev 8 (que j'apprécie de plus en plus), je suis ravi de constater que les bonnes vieilles méthodes d'optimisation acquises en SQL de FoxPro seront encore applicables en WD8.
"Manu" a écrit dans le message de news:cd55c2$63i$
> Après mure réflexion, elecoest a écrit : >> "Yves" a écrit dans le message de news: >> >>> Est-il possible via une requête d'afficher les 50 premiers >>> enregistrements sous ORACLE ? >> >> ...where rownum < 51 >> >> Par contre le rownum s'execute avec un order by et avant un group by >> :-( > > et oui, c'est le truc incompréhensible de Oracle; Pas de LIMIT ou de > TOP.
Pourquoi incompréhensible alors que nous sommes dans l'air du tout ensembliste ? J'avais un programme écrit en ancienne mode : je lis d'un coté, j'écris de l'autre et je commit assez souvent pour ne pas remplir le RBS : 35 heures pour générer 8 millions de lignes à partir de 2 millions avec un algo
costo
entre les 2. Un "expert" 8i est venu, on a passé le biniou en ensembliste (tout en requete) on est passé à moins de 6 heures.
Pour faire l'analogie, c'est le même rapport que l'on peut avoir entre un programme écrit en hxxx et à partir de requetes. Par contre, pour revenir
à
mon cas, nous avons du créer des tables temporaires dites de travail. Pourquoi cette remarque ? Tout simplement pour dire que l'on ne peut pas _tout_ faire en 1 seule requete.