Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & Oracle
PHP & Oracle Forum d'entraide sur Oracle avec PHP. Avant de poster -> FAQ Oracle et Cours Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/07/2006, 10h27   #1
Invité de passage
 
Inscription : mai 2004
Messages : 5
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 5
Points : 0
Points : 0
Envoyer un message via MSN à Pointu
Par défaut Grosse requête ou plusieurs petites ?

Bonjour !

J'ai une question existentielle.
Je développe un petit moteur de recherche sur une appli web,
et je souhaite afficher mes résultats 20 par 20 (histoire de pas se retrouver avec 1600 résultats sur une seule page !)

J'ai donc une question de novice a qui on donne plusieurs sons de cloche :
1/ Je fais une requête en ramenant tous mes résultats d'un coup, puis je gère l'affichage de 20 résultats avec mon php ?
2/ Je fais des requêtes avec un rownum <= 20 ou quelque chose comme ca qui me ramène mes résultats 20 par 20 ?

Merci pour vos réponses, si je me suis mal exprimée demandez moi !!
Pointu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2006, 10h29   #2
Membre émérite
 
Avatar de guitou12
 
Guillaume
Inscription : juillet 2006
Messages : 813
Détails du profil
Informations personnelles :
Nom : Guillaume
Âge : 29

Informations forums :
Inscription : juillet 2006
Messages : 813
Points : 905
Points : 905
Envoyer un message via MSN à guitou12
Si c'est du mysql sert toi de la clause LIMIT qui limitera le nombre d'enregistrements retournés
__________________
Le . est la base de toute bonne concaténation, marre de voir des
echo "Mavar1 = $toto et Mavar2 = $titi";
ou pire echo 'Mavar1 = ',$toto,' et Mavar2 = ',$titi;
pratiquez plutôt le echo 'Mavar1 = '.$toto.' et Mavar2 = '.$titi;
guitou12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2006, 10h31   #3
Invité de passage
 
Inscription : mai 2004
Messages : 5
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 5
Points : 0
Points : 0
Envoyer un message via MSN à Pointu
Merci pour ta réponse rapide !
Ce n'est pas du mySQL, c'est du Oracle....et a priori le LIMIT n'existe pas..enfin, d'après mes recherches google !..quelqu'un pourrait t'il me confirmer l'info svp ?

Au point du vue requête, c'est pas embetant de faire des aller retour entre la base et le client ?
Pointu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2006, 10h34   #4
Membre émérite
 
Avatar de guitou12
 
Guillaume
Inscription : juillet 2006
Messages : 813
Détails du profil
Informations personnelles :
Nom : Guillaume
Âge : 29

Informations forums :
Inscription : juillet 2006
Messages : 813
Points : 905
Points : 905
Envoyer un message via MSN à guitou12
Citation:
Envoyé par Pointu
Merci pour ta réponse rapide !
Ce n'est pas du mySQL, c'est du Oracle....et a priori le LIMIT n'existe pas..enfin, d'après mes recherches google !..quelqu'un pourrait t'il me confirmer l'info svp ?

Au point du vue requête, c'est pas embetant de faire des aller retour entre la base et le client ?

Je confirme sous Oracle ya pas (c'est bien dommage car ça me servirait bien :'( )

Après faire des aller retours entre la base et le client ça va dépendre du nombre d'utilisateurs connectés simultanément, des possibilités de ta base et tout ça...

Sinon tu pourrais sélectionner tes enregistrements en limitant à partir de l'index de ta table, et quand tu appelles la page suivante ca incrémente ta limite d'index de +20 par exemple...
__________________
Le . est la base de toute bonne concaténation, marre de voir des
echo "Mavar1 = $toto et Mavar2 = $titi";
ou pire echo 'Mavar1 = ',$toto,' et Mavar2 = ',$titi;
pratiquez plutôt le echo 'Mavar1 = '.$toto.' et Mavar2 = '.$titi;
guitou12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2006, 10h45   #5
Invité de passage
 
Inscription : mai 2004
Messages : 5
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 5
Points : 0
Points : 0
Envoyer un message via MSN à Pointu
Vi effectivement c'était une idée aussi....mon doute subsiste sur le fait de demander une fois un truc assez gros, ou plusieurs fois un truc plus petit !!

Quand tu parles de selectionner les enregistrements, c bien de bouger mon curseur rownum a chaque fois que je clique sur un bouton "résultats suivants"?
Pointu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2006, 10h55   #6
Invité de passage
 
Inscription : mai 2004
Messages : 5
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 5
Points : 0
Points : 0
Envoyer un message via MSN à Pointu
Après plusieurs débats......
En général lorsqu'on fait une recherche, on a quand même grande chance de trouver son résultat dans les 1ers résultats....
je vais donc opter pour une mini requête et des mini suivantes si on trouve pas dans les 1ers résultats. L'idéal serait aussi la chose suivante : pendant que le bonhomme regarde ses 1ers résultats, la 2è requête part et ramène les résultats suivants, comme ça, s'il en a besoin, il les obtient instantanément !!

J'essaie de voir comment faire ça et pitetre je mets un pti bout de code quand j'ai fini....

Merci beaucoup en tout cas !
Pointu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2006, 11h00   #7
Expert Confirmé
 
Avatar de KiLVaiDeN
 
Inscription : octobre 2003
Messages : 2 714
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 2 714
Points : 2 689
Points : 2 689
Salut,

Si tu fais du preload, tu vas "doubler" le nombre de requête, pour pas grand chose : le temps investi à préloader, sera récupéré par un autre client qui utilisera le moteur de recherche. Donc je ne te le conseille pas

La solution du rownum est la meilleure en tout cas : il faut toujours limiter les colonnes également de la requête au strict minimum, c'est pour ça que ton moteur sera super performant si tu utilises un bon rownum, et si tu ne retournes que les colonnes nécessaires à l'affichage de la liste de résultats

A+
__________________
K
KiLVaiDeN est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h58.


 
 
 
 
Partenaires

Hébergement Web