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 :

Performances de requêtes [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 165
    Par défaut Performances de requêtes
    slt
    j'ai une petite interrogation;

    je fais la chose suivante pour charger ma base de donnée, je reçois un tableau multidimentionnel qui contient des invités liés a un organisateur, je lis donc ce tableau avec for each et a chaque boucle j'envois une requete avec le nouveaux contact:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    public function setInvites($listeInvites)
    	{
     
     
    		foreach ($listeInvites as $objet => $element)
    		{
     
    			foreach ($element as $key => $value)
    			{
    				($key == "_idFete")?$idFete=$value:$idFete = null ;
    				($key == "_nom")?$nom=$value: $nom = null ;
    				($key == "_prenom")?$prenom=$value:$prenom = null;
    				($key == "_email")?$email=$value:$email = null;
    				($key == "_idOR")?$idOR=$value:$idOR = null;
     
    			$requete = "INSERT INTO `invites` (`idIN`, `nomIN`, `prenomIN`,`emailIN`,`idOR`,`idFete`) VALUES (NULL, '$nom', '$prenom','$email','$idOR','$idFete')";
     
    			$resultat = $this->db->query($requete);
     
    			}
     
     
    		}
     
    	}
    la question que je me pose, c'est de savoir si c'est correct au niveau performance pour ma base et si c'est très propre de codé comme ça.

    je ne veut pas serialisé mon tableau pour pouvoir effectué des opération sur mes invités.

    j'espere avoir était clair.

    merci A+

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 51
    Par défaut
    Salut,
    Jusqu'à preuve du contraire, je pense pas qu'il y ait de gros soucis dans ton code. De toute façon, quelles solutions tu voudrais adopter à la place ? Ca aurait été, je pense, plus problématique si tu avais une requête qui liait plusieurs tables. Dans ce cas là, il vaut mieux faire deux requêtes sur une table et de lier les deux grâce à PHP.
    ++

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Par défaut
    A première vue, ça doit pas vraiment fonctionner ce code, ou alors ça risque de te mettre un joli bordel dans ta DB.

    à chaque $key tu éxécutes une requête d'insertion avec des éléments qui n'ont soit pas encore été récupérés, soit des éléments obsolètes.

    pourquoi tiens tu à extraire le contenu du tableau avant de le passer à la requête ?

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    Citation Envoyé par Petibidon Voir le message
    A première vue, ça doit pas vraiment fonctionner ce code, ou alors ça risque de te mettre un joli bordel dans ta DB.

    à chaque $key tu éxécutes une requête d'insertion avec des éléments qui n'ont soit pas encore été récupérés, soit des éléments obsolètes.

    pourquoi tiens tu à extraire le contenu du tableau avant de le passer à la requête ?
    +1 ya une probleme, mais pour essayer de le reformuler c'est du au fait que lorsque tu itéres sur chaque propriété de $element, tu executes aussi une requete d'insertion.
    Hors, ce n'est qu'après avoir itéré ton objet et attribué les variables que tu dois insérer.

    M'enfin la quesiton se pose, pourquoi tu ne fais pas simplement $element["truc bidule"] ou $element->truc_bidule.... ? Tu ne dois pas connaitre la concaténation j'imagines ? http://www.php.net/

    bye

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 165
    Par défaut performance de requete
    slt
    et désolé pour le code j'ai retapé vite fait , j'aurais du le recopiez(je vous le joint) , ce code fonctionne parfaitement , ma question portée sur la methode , la facon de faire , je me suis dit qu'il y avait peut être une autre solution moins gouteuse en performances que d'effectuer ces requetes a la queue leuleu.

    merci pour vos conseils et encore 1000 excuses pour le code que j'ai posté ds mon 1er post.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    public function setInvites($listeInvites)
    	{
     
     
    		   $idFete = 0;
    		   $nom = "";
    		   $prenom = "";
    		   $email = "";
    		   $idOR = 0;
     
     
    		foreach ($listeInvites as $objet => $element)
    		{
     
    			foreach ($element as $key => $value)
    			{
    				if($key == "_idFete"){
     
    					$idFete=$value;
     
    				}elseif ($key == "_nom"){
     
    					$nom=$value;
     
    				}elseif ($key == "_prenom"){
     
    					$prenom = $value;
     
    				}elseif ($key == "_email"){
     
    						$email = $value;	
     
    				}elseif ($key == "_idOR"){
     
    						$idOR = $value;
    					}
     
    			}
     
     
     
    			$requete = "INSERT INTO `invites` (`idIN`, `nomIN`, `prenomIN`,`emailIN`,`idOR`,`idFete`) VALUES (NULL, '$nom', '$prenom','$email','$idOR','$idFete')";
     
    			$resultat = $this->db->query($requete);
     
    			if($resultat)
    			{
    				$resultat->closeCursor();
     
    			}
     
    		}
     
     
    		return  $resultat;
     
     
    		//$resultat = $this->db->query($requete);
     
    		//return $resultat;
     
     
    	}
    merci A+

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    slt

    Pas de souci.

    A la rigueur tu peux faire un insert en une fois, mais cela pose de nouveaux problèmes, notamment pour récupérer les nouvelles clés auto incrémenter.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO ma_table_b (colonne_a, colonne_c) VALUES ('valeur_a_1','valeur_b_1'), ('valeur_a_2','valeur_b_2'), ('valeur_a_3','valeur_b_3');
    http://dev.mysql.com/doc/refman/5.0/fr/insert.html

    a plus

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

Discussions similaires

  1. problème de performance sur requête avec Tsearch2
    Par Morpheas dans le forum PostgreSQL
    Réponses: 0
    Dernier message: 05/02/2008, 12h25
  2. Performance des requêtes - jointure par fonctions
    Par denevers dans le forum PostgreSQL
    Réponses: 0
    Dernier message: 07/12/2007, 15h11
  3. Chute des performances à chaque requête
    Par Logrus dans le forum JDBC
    Réponses: 2
    Dernier message: 03/11/2007, 13h19
  4. [performances] 40 requêtes INSERT
    Par Tukan dans le forum Requêtes
    Réponses: 6
    Dernier message: 15/10/2006, 14h16
  5. [9.2] Performance et requêtes
    Par genio dans le forum Oracle
    Réponses: 8
    Dernier message: 17/11/2005, 09h13

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