Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
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 14/03/2011, 15h31   #1
Invité de passage
 
Inscription : juin 2010
Messages : 19
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 19
Points : 2
Points : 2
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.
noyuw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2011, 15h40   #2
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
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)
grunk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2011, 15h48   #3
Invité de passage
 
Inscription : juin 2010
Messages : 19
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 19
Points : 2
Points : 2
Alors en fait je vous fait un exemple de ce que je ferai en php :

Code :
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 ?
noyuw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2011, 16h00   #4
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
Pourquoi ne pas faire une seule requête avec la clause IN() ?

Code :
SELECT images FROM matable WHERE id IN(1,2,3,4,5)
grunk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2011, 16h30   #5
Invité de passage
 
Inscription : juin 2010
Messages : 19
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 19
Points : 2
Points : 2
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
noyuw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2011, 16h50   #6
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
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
grunk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2011, 17h41   #7
Invité de passage
 
Inscription : juin 2010
Messages : 19
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 19
Points : 2
Points : 2
Oui je vais devoir sortir l'affichage du while sql, pas le choix !

et puis je me suis planté c'est pas 5000 mais un peu plus de 42000, donc juste pas possible.

Merci pour ta solution je vais aller dans ce sens.
noyuw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2011, 18h47   #8
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 465
Points : 8 465
la un problème dans ta conception ou dans la logique des choses, montre ta base et ce que tu veux faire exactement
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h08.


 
 
 
 
Partenaires

Hébergement Web