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 :

Enorme tableau, que faire ? [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 20
    Par défaut Enorme tableau, que faire ?
    Bonjour je vous expose mon problème.

    Je dois récupérer un "nom d'image" lié à un ID.

    Seulement j'en ai à peu près 5000 différents.

    Actuellement je stock ca dans une BDD, et je check donc l'id dedans.

    Mais quand on recherche et que il y a une centaine de résultats, ca fait 100 requêtes..

    Je voulais savoir si c'était moins lourd de stocker ca dans un tableau PHP et de faire un bête check du style " $check[$id] "

    plutôt que de faire des requête sql mais bon c'est sans oublier que ce tableau ferait dans les 5000 lignes.. d'où ma question.

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Faudrait nous montrer un peu de code mais je vois pas pourquoi 100 résultats conduirais à 100 requetes SQL (ce qui évidemment est un tueur de serveur)
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 20
    Par défaut
    Alors en fait je vous fait un exemple de ce que je ferai en php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function checkid($id) {
    $tableau[12] = 'namea.gif';
    $tableau[14] = 'nameb.gif';
    $tableau[15] = 'namec.gif';
    $tableau[18] = 'namee.gif';
    $tableau[20] = 'nameh.gif';
     
    $name = $tableau[$id];
     
    return $name;
    }
    Seulement 5000 lignes de tableau a "définir", c'est pas un peu lourd pour php ?


    En fait c'est pour des résultats de recherche, la LIMIT étant de 100, il y a donc une boucle SQL et a chaque passage ca check l'image à afficher pour chaque ligne.

    donc ca ferai tune requête par passage, c'est pourquoi je me tournerai plutôt vers les tableau, maintenant à savoir si c'est pas trop lourd non plus.


    au pire des cas je peux faire un JOIN dans ma requête, qu'est ce que vous pensez de ces 3 solutions ?

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Pourquoi ne pas faire une seule requête avec la clause IN() ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT images FROM matable WHERE id IN(1,2,3,4,5)
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 20
    Par défaut
    Parceque j'affiche les résultat via la while de ma requête, donc je peux pas savoir tous les ID avant la fin d'execution

  6. #6
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    A mon avis y'a pas de solution miracle il faut sortir ton affichage du while , n'y récupérer que les infos nécessaires , faire la requêtes pour les images puis afficher.
    Un tableau de 5000 entrée en dur , en plus d'être une solution crado va consommer beaucoup de mémoire
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. [AC-2007] lenteur tableau croisé d'une requête avec fonction vba que faire ?
    Par rogerfon dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 07/07/2012, 21h42
  2. Les PC sont de plus en plus bruyants que faire
    Par plichtal dans le forum Ordinateurs
    Réponses: 260
    Dernier message: 23/12/2011, 12h28
  3. case tableau: comment faire des hauteurs plus petites que 23px
    Par cortex024 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 28/11/2006, 17h01
  4. [DirectDraw] Que faire pour optimiser le rendu ???
    Par mat.M dans le forum DirectX
    Réponses: 8
    Dernier message: 12/12/2003, 18h02
  5. [maintenance][performance] Que faire comme maintenance ?
    Par woodwai dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 06/11/2003, 15h39

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