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

EDI, CMS, Outils, Scripts et API PHP Discussion :

optimisation (question assez générale) [Joomla!]


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 7
    Par défaut optimisation (question assez générale)
    Bonjour à tous,

    je n'ai que peu d'expérience avec Virtuemart (et plus généralement avec Mysql), mais je tombe parfois sur des portions de code qui me paraissent peu optimisées ...
    A votre avis, dans le cas suivant (fichier ps_order.php > fonction order_status_update) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    // Update the Order Items' status 
    $q = "SELECT order_item_id FROM #__{vm}_order_item WHERE order_id=".$d['order_id'];
    $db->query($q);
    $dbu = new ps_DB;
    while ($db->next_record()) {
        $item_id = $db->f("order_item_id");
        $q  = "UPDATE #__{vm}_order_item SET order_status='".$d["order_status"]."'"
        . "\n, mdate='" . $timestamp . "' "
        . "\n WHERE order_item_id=".$item_id;
        $dbu->query( $q );
    }
    ne serait-il pas plus économique en requêtes de faire directement un UPDATE de tous les items correspondants à l'id de commande ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // Update the Order Items' status 
    $q  = "UPDATE #__{vm}_order_item SET order_status='".$d["order_status"]."'"
    . "\n, mdate='" . $timestamp . "' "
    . "\n WHERE order_id=".$d['order_id'];
    $dbu->query( $q );
    Quelle serait l'inconvénient possible (incompatilibité MySql ?) ?

    Merci d'avance

  2. #2
    Membre chevronné
    Avatar de opware2000
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2006
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 243
    Par défaut
    VM a été à l'origine développé par quelqu'un qui codait sans réelle optimisation, du coup ca peut expliquer pourquoi il en reste des traces
    c'est vrai que dans ce cas, je ne vois pas pourquoi il n'a pas fait un update directement. Mais bon ce n'est que mon avis

  3. #3
    Membre éprouvé
    Inscrit en
    Mai 2002
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2002
    Messages : 101
    Par défaut
    Salut,

    Ton second code est clairement meilleur et plus clair. Je ne vois pas d'effet de bord.

    La première manière de aurait pu se justifier si l'update s'effectuait sur une table différente que celle utilisée dans le select (et encore, en définissant correctement la clause WHERE, c'est même pas dit). Mais dans le cas présent, je ne comprends pas pourquoi utiliser SELECT et UPDATE.

  4. #4
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 7
    Par défaut
    Merci de votre réponse.
    Pour info j'ai vu dans le code d'autres portions vraiment pas très catholiques
    Par exemple dans la récupération des états par pays, le SELECT est lancé 234 fois (un select par pays ) !

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

Discussions similaires

  1. optimisation question de rapidité (<> vs not)
    Par Just-Soft dans le forum Langage
    Réponses: 5
    Dernier message: 20/11/2008, 11h51
  2. Question toute générale : le signe @.
    Par Le Barde dans le forum Programmation (La)TeX avancée
    Réponses: 3
    Dernier message: 10/03/2008, 17h32
  3. Question culture générale
    Par loverdev dans le forum VB.NET
    Réponses: 9
    Dernier message: 25/06/2007, 16h07
  4. Optimisation..question de prudence
    Par maxtin dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 15/12/2006, 16h15
  5. Question assez bête concernant le texte
    Par Anduriel dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 13/06/2005, 21h52

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