IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Plusieurs requêtes ou stockage dans tableau [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 61
    Points : 36
    Points
    36
    Par défaut Plusieurs requêtes ou stockage dans tableau
    Bonjour à tous,

    J'ai l'habitude de coder habituellement avec plusieurs requêtes SQL (MySQL) pour récupérer des informations dans la base.
    Mais faudrait-il utiliser une requête global et stocker les données dans un tableau ...

    Par exemple:
    Solution 1
    Req. 1 : Récupération des données membre nom,idCategorie, ...

    Req. 2 : Pour chaque membre je fais une requête pour recupérér le nom de la catégorie avec l'idCategorie

    Solution 2
    Req. 1 : Récupération des données membre nom,idCategorie, ...

    Req. 2 : Récupération des données categorie nom, ...
    Stockage des données cat dans un tableau
    Puis pour chaque membre on parcours le tableau pour trouvé le nom de la catégorie correspondante.

    Je pense que suivant certains cas, telle ou telle solution est mieux.
    Mais j'ai du mal à savoir dans quel cas utiliser telle ou telle solution.
    Laquelle utilise plus de ressource serveur ou client ?
    Laquelle est plus rapide ?

    Si quelqu'un peut m'expliquer comment utiliser ces solutions ce serait vraiment sympa !

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Bonjour et bienvenu sur le forum,

    Fais plutot une requete avec jointure pour recuperer membre_nom et categorie_nom en un seul coup.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 61
    Points : 36
    Points
    36
    Par défaut
    Merci pour ta réponse,

    mais ce n'était qu'un exemple, mes questions sont plus pour des cas généraux, pour des cas où on ne peut faire de jointure par exemple ...

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    J'ai eu a ameliorer un script comme ca :
    le script parcourait les milliers d'enregistrements d'une table et pour chacun cherchait dans une autre table d'une vingtaine de lignes.

    Il etait alors evidemment bien plus rapide de stocker la petite table dans une tableau et de travailler avec le tableau.
    L'etape connexion-requete prend 0,01 secondes ... mais repetée des milliers de fois ce n'est plus acceptable.
    Le stockage de la table de reference prend juste de la mémoire.

    Autre exemple tout bête : dans une formulaire presentant la meme liste de choix repetée plusieurs fois, on ne va pas refaire la requete des choix pour chaque liste.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    Salut à tous,

    Plutôt que de créer un autre topic sur un sujet similaire j'en profite pour poser ma question ici.

    Je fais un moteur de recherche à partir d'un formulaire de sélection multi-critères ... des critères numériques, de dates, de mots-clés, ...

    Dans ma page de traitement j'ai un "petit" générateur de requêtes SQL qui me transforme tout ca ... parfait !

    Maintenant arrive le problème de l'affichage ... celui-ci doit s'effectuer par page (mettons de 10 résultats par page)
    Mes requêtes sont le plus souvent à base de LIKE (pour ce qui concerne les mots clés) et peuvent être assez coûteuses en termes de ressources ... or pour afficher par page j'ai 2 solutions :

    Solution 1 : Une requête pour connaître le nombre total de réponses et une pour afficher les réponses correspondant à la page demandée. Cette solution se répète a chaque changement de page ..... propre mais coûteux.

    Solution 2 : Une requête donnant toutes les réponses de la recherche. Stockage dans un tableau (en session par exemple). Affichage des résultats d'une seule page a partir des données du tableau. Si on change de page pas besoin de refaire d'autres requêtes ... par contre on a stocké peut-être pour rien de grandes quantités d'informations qui de toutes façon deviennent obsolètes avec le temps

    Soyons clair je ne demande pas de solution mais un avis issu de l'expérience de tout le monde me sera bien utile (avis commenté et si possible justifié

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Pourquoi trouves-tu que la methode 1 est couteuse ?

    la methode 2 est de toute facon a bannir : imagine une table de milliers d'enregistrement demandée par des milliers de personnes : ca ferrait une sacrée quantité de donnée pour rien a traiter par mysql puis par php.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    Je pensais ma requête coûteuse car il y a pas mal de LIKE pour la correspondance des mots clés ... en plus sur plusieurs champs et pour finir je suis obligé, dans certains cas, pour avoir la correspondance du mot seul de tripler les comparaison de type LIKE une 'keyword %' une '% keyword %' et une '% keyword' .... et pour couronner le tout je fais la requête 2 fois ... une fois pour avoir le nombre de résultats et une fois pour afficher les résultats de la page en cours .... voila pourquoi je la trouve coûteuse

    Mais remarque je pourrais peut-être faire une seule requête avec un SELECT * suivi de mes conditions multiples et faire un "mysql_num_rows" pour compter les résultats à la place d'un SELECT count(*) ..... au moins ça m'éviterait de faire 2 requêtes pratiquement identiques ....

    Par contre je partage ton avis sur la seconde solution

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 61
    Points : 36
    Points
    36
    Par défaut
    Merci Sabotage pour ton expérience.

    Il est clair que chaque cas est pratiquement unique et qu'il faut s'adapter à chaque fois, mais ton exemple est très bien.

    Désolé pour le retard ... je le met maintenant en Résolu.

    Merci à tous.
    A bientôt !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. plusieurs requêtes dans un tableau SQLSRV 2005
    Par grping dans le forum Développement
    Réponses: 8
    Dernier message: 01/12/2009, 16h00
  2. Plusieurs requêtes T-SQL dans une fonction
    Par ellix86 dans le forum Développement
    Réponses: 3
    Dernier message: 26/02/2009, 16h48
  3. Plusieurs requêtes de création dans un seul composant ado => bug
    Par SkYsO dans le forum Bases de données
    Réponses: 9
    Dernier message: 25/04/2008, 15h21
  4. Réponses: 6
    Dernier message: 18/09/2007, 17h10
  5. Lire ligne puis stockage dans tableau
    Par niko40 dans le forum C++
    Réponses: 9
    Dernier message: 03/04/2006, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo