Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
750 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requete dans une boucle, danger ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Requete dans une boucle, danger ?

n°1920734
Scarf3ss3
Posté le 02-09-2009 à 21:01:55  profilanswer
 

Bonsoir à tous,
 
ma question est très rapide, je ne peux pas éviter sur une de mes pages de faire passer une requete dans une boucle while.  
Derrière une condition dans ce while, ça va exécuter un select tout con avec uniquement le n° de la clef primaire dans la clause WHERE, ou ça va exécuter un SELECT avec une jointure interne, donc de la table avec elle même pour aller recuperer d'autres données.
 
En sachant que la boucle tournera maximum 5 fois, que la table où ça va taper il y aura maximum 1000 entrées et que c'est sous mysql, mais par contre la boucle sera amené à être exécutée des dizaines de milliers de fois par jour du fait du nombre des utilisateurs. cela peut représenter un risque pour ma bdd ?


Message édité par Scarf3ss3 le 02-09-2009 à 21:47:27
mood
Publicité
Posté le 02-09-2009 à 21:01:55  profilanswer
 

n°1920869
antac
..
Posté le 03-09-2009 à 10:36:17  profilanswer
 

Ta boucle s'arrette sur une condition fixe qui ne risque pas de bloquer ? tu fais assez de test de vérification avant d'envoyer la sauce à MySQL ?  
Sinon pour moi peu de risque.

n°1920880
skeye
Posté le 03-09-2009 à 11:07:27  profilanswer
 

T'es sûr de ne pas pouvoir sortir la requête de la boucle? ça me parait étrange.:o


---------------
Can't buy what I want because it's free -
n°1920886
Scarf3ss3
Posté le 03-09-2009 à 11:41:15  profilanswer
 

Déjà merci beaucoup d'avoir pris la peine de me répondre :)
 

antac a écrit :

Ta boucle s'arette sur une condition fixe qui ne risque pas de bloquer ? tu fais assez de test de vérification avant d'envoyer la sauce à MySQL ?  
Sinon pour moi peu de risque.


 
Concrètement voici la tronche de la table
 
id_theme SMALLINT auto_increment clef primaire
nom VARCHAR(120)
nom_uk VARCHAR(120)
niveau_1 SMALLINT Indexé
niveau_2 SMALLINT Indexé
 
Et les 2 types de requetes réalisés dans la boucle
 
soit : SELECT nom FROM ma_table WHERE id_theme = '$id_theme' LIMIT 1
soit : SELECT t1.nom, t2.nom FROM ma_table t1, ma_table t2 WHERE t2.niveau_2 = '$id_theme' AND t2.niveau_1 = t1.id_theme LIMIT 1
 

Citation :

T'es sûr de ne pas pouvoir sortir la requête de la boucle? ça me parait étrange.:o


 
Bon je n'ai pas eu de formation théorique, j'ai lu et relu un bouquin sur le sql d'oreilly uniquement. Simplement je fais un site qui s'apparente plus à un logiciel d'ailleurs et sur les 1,70mo de codes déjà écrit, répartit sur 199 pages c'est le premier cas de figure où je ne vois pas comment faire autrement. Il existe certainement une astuce mais je suis sur que ça doit être très très alambiqué.

n°1920888
skeye
Posté le 03-09-2009 à 11:47:07  profilanswer
 

Rien de bien compliqué : tu génères ta requête qui retourne le tout, et tu boucles sur le résultat :
 
select titi, toto, tutu from table where id in (id1, id2, id2, id4, id5 [...])
 
Et sinon, 1.7mo de code php sur 199 pages, ouch.[:delarue5]


---------------
Can't buy what I want because it's free -
n°1920889
Scarf3ss3
Posté le 03-09-2009 à 11:57:17  profilanswer
 

En faite non regarde dans la deuxième requete je vais chercher sur "t2.niveau_2" et non sur la clef primaire je ne peux pas faire ce que tu dis.
Il y a certainement une solution comme je disais, peut être qu'un matin en me réveillant j'aurai une révélation. En attendant c'est surtout pour savoir si cette boucle qui tournera 5 fois maximum peut avec l'usage me créer des soucis au niveau de ma bdd.

Citation :


Et sinon, 1.7mo de code php sur 199 pages, ouch.[:delarue5]


J'avoue il y a du html dedans , et faut compter mes tartines de commentaires aussi  :p

Message cité 1 fois
Message édité par Scarf3ss3 le 03-09-2009 à 12:01:46
n°1920890
skeye
Posté le 03-09-2009 à 12:09:45  profilanswer
 

Scarf3ss3 a écrit :

En faite non regarde dans la deuxième requete je vais chercher sur "t2.niveau_2" et non sur la clef primaire je ne peux pas faire ce que tu dis.


 
Rien de bien compliqué non plus.
 
SELECT t1.nom, t2.nom  
FROM ma_table t1 join ma_table t2 on t2.niveau_1 = t1.id_theme
WHERE t2.niveau_2 in (..., ...)


---------------
Can't buy what I want because it's free -
n°1920892
Scarf3ss3
Posté le 03-09-2009 à 12:21:23  profilanswer
 

Oui ça d'accords aussi mais ça ne va pas car j'ai pas tout expliqué, il y a d'autres paramètres à prendre en compte comme entre autre en amont un tri qui se fait au niveau des colonnes d'une autre table qui va me générer ensuite ma boucle. Je t'assure que c'est vraiment pas aussi simple que de passer mes résultats d'une précédente requete dans une boucle ensuite. Avec cette page je suis au limite de mes capacités intellectuelles  :(  
Mais toi quel est juste ton avis sur la dangerosité de ces 5 requetes dans une boucle ?

n°1920894
skeye
Posté le 03-09-2009 à 12:26:42  profilanswer
 

Je vois pas pourquoi ce serait dangereux...ça risque juste d'être un peu lent.:o


---------------
Can't buy what I want because it's free -
n°1920895
Scarf3ss3
Posté le 03-09-2009 à 12:31:17  profilanswer
 

Haaaaa ça me rassure :)
Bon je remonterai le post d'ici quelques années quand j'aurai le courage de replonger dans ce bout de programme et d'expliquer clairement ma problématique.
Mais merci beaucoup de tes réponses :)


Message édité par Scarf3ss3 le 03-09-2009 à 12:32:10

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requete dans une boucle, danger ?

 

Sujets relatifs
Requete pour faire un classement : lenteur !sendAndLoad // Boucle For + onRelease(valeur i)
[sql] Requete MaxPb execution de requete sur site en php
Faire une boucle pour recuperer la valeur de textboxboucle pour copier même plage de plrs feuilles de même format
Executer une requête avec DBExplorer32 ?Jointure vers sous-requête
[VBA] problème dans une boucle 
Plus de sujets relatifs à : Requete dans une boucle, danger ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR