OVH Cloud OVH Cloud

Double requete et vitesse d'execution

1 réponse
Avatar
ludovic.thebault
Bonjour,

je cherche à l'accélérer l'affichage d'une longue liste de noms qui est
produite selon cette méthode :

Les ingrédients :
- une table avec la liste complète de noms
- une autre table avec des détails sur noms de la première liste.
(Je mets à jour de temps en temps cette seconde table, pas la première
qui est censée être complète).

Je veux afficher la liste complète des noms avec un lien pour ceux
présents dans la table "details".

Ma recette actuelle (une seconde requete au sein d'une boucle php) :

$marequete="Select * from maliste";
$envoi = mysql_query($marequete);
...
while{($tableau = mysql_fetch_array($envoi))
{
...
$requet2="select details.id from details where
details.id=\"".$tableau['id']."\"";
$envoi2 = mysql_query($requet2);
$result = mysql_fetch_array($envoi2);
if ($result!="")
{... alors créer le lien et afficher le nom }
else
{afficher juste le nom}
...

Comment accèlérer la chose ? J'ai tenté une jointure, mais c'est encore
pire !

1 réponse

Avatar
P'tit Marcel
(Ludovic Thébaul t) écrivit
news:1g7tnty.6n5g4v6rdrwN%:

Les ingrédients :
- une table avec la liste complète de noms
- une autre table avec des détails sur noms de la première liste.

Je veux afficher la liste complète des noms avec un lien pour ceux
présents dans la table "details".


Ma recette actuelle (une seconde requete au sein d'une boucle php) :



moche :
lent, pas de gestion d'erreur, erreur de typage en retour pour
mysql_fetch_array. mais bon, c'est pas le sujet de ce forum mais du forum
fr.comp.lang.php donc on n'en dira pas plus.


Comment accèlérer la chose ? J'ai tenté une jointure, mais c'est encore
pire !




SELECT details.id, details.nom FROM details
INNER JOIN maliste ON details.id = maliste.id
ORDER BY details.id

Bien vérifier que la colonne id est clé primaire ou index de la table
details. Si cela ne suffit pas, Publie ici le résultat sous phpmyadmin de
l'instruction EXPLAIN SELECT details.id, details.nom FROM details INNER
JOIN maliste ON details.id = maliste.id ORDER BY details.id


eça