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

SQL Oracle Discussion :

Votre avis sur des parties de code "triviales"


Sujet :

SQL Oracle

  1. #1
    Membre éclairé Avatar de bstevy
    Homme Profil pro
    Solutions Architect
    Inscrit en
    Mai 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Japon

    Informations professionnelles :
    Activité : Solutions Architect
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 552
    Points : 870
    Points
    870
    Par défaut Votre avis sur des parties de code "triviales"
    Bonjour,


    Je suis en train de reprendre un vieux code développé dans mon entreprise.
    L'absence de commentaires ne facilite pas les choses, et je suis tombé sur des parties un peu curieuse, des genres de tautologies qui me laissent perplexes.

    Aussi, j'aimerai avoir votre avis si vous pensez que ca peut influencer quelque part les perfs ou si c'est complètement inutile et que je peux donc m'en débarrasser.

    Voici les deux cas que j'ai trouvés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DECODE(NVL(PP.PPRO_NO_FUP,' '),'1','Y','N')
    Quelle est l'utilité dans ce cas du NVL ?

    Morceau de code dans un select :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    (SELECT CASE WHEN MAX(PROC_GROSS_PREMIUM_100) > 0 THEN 'Y' ELSE 'N' END
          FROM AD_PROPOSAL_COVERS
          WHERE PROC_APV_PROP_REFERENCE = APVP_PROP_REFERENCE
            AND PROC_APV_VERSION_NUMBER = APVP_PROP_VERSION
            AND PROC_APVP_PLAN_NUMBER = APVP_PLAN_NUMBER
            AND PROC_TAR_CODE = PROC_TAR_CODE
            AND PROC_PBB_NUMBER IN (106,
                                    107)) AS "LAWYER_EXP" ,
    La condition AND PROC_TAR_CODE = PROC_TAR_CODE me laisse perplexe. J'imagine que c'est peut etre pour filtrer les valeurs nulles, mais dans ce cas, un where PROC_TAR_CODE is not null ne serait il pas plus efficace ?


    Est ce que c'est moi qui trouves ces parties un peu bizarres, ou est ce que de votre point de vue aussi elles le sont ? Y aurait il une raison d'un point de vue perf d'avoir fait ca ?


    Merci d'avance pour vos réponses.

    Steven

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Pour le premier cas, en effet l'utilisation de NVL ne sert à rien.

    Dans le second cas, on voit qu'il s'agit d'une requête scalaire. Est-ce qu'ici il n'y a pas une erreur de corrélation avec la requête principale ?
    Est-ce que le code pourrait être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    WHERE PROC_APV_PROP_REFERENCE = APVP_PROP_REFERENCE
      AND PROC_APV_VERSION_NUMBER = APVP_PROP_VERSION
      AND PROC_APVP_PLAN_NUMBER   = APVP_PLAN_NUMBER
      AND PROC_TAR_CODE           = APVP_PROC_TAR_CODE
    Au niveau des performances, ce n'est pas dit que ça ait un impact significatif.
    Le premier problème de mauvaise performance est lié aux plans d'exécution, lié de manière plus ou moins forte avec la modélisation, les stats, les index.
    Le CPU vient plus loin, et dans le cas du NVL on parle de quelques cycles en plus, probablement négligeables devant tout le reste.

    Si vous tombez dessus pendant que vous travaillez sur un script : corrigez et commentez.
    Mais ne partez pas en croisade, ce ne serait pas rentable de travailler sur ce sujet.

  3. #3
    Membre éclairé Avatar de bstevy
    Homme Profil pro
    Solutions Architect
    Inscrit en
    Mai 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Japon

    Informations professionnelles :
    Activité : Solutions Architect
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 552
    Points : 870
    Points
    870
    Par défaut
    OK, merci pour ces informations

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/02/2009, 19h13
  2. Réponses: 3
    Dernier message: 01/09/2008, 14h43
  3. [java.lang.class] Votre avis sur une portion de code
    Par be_tnt dans le forum Langage
    Réponses: 3
    Dernier message: 18/10/2006, 16h55
  4. Votre avis sur des morceaux de resumes
    Par Asarnil dans le forum C++
    Réponses: 5
    Dernier message: 03/01/2005, 15h22

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