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 :

Tuning et questions diverses.


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Arvulis
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 117
    Par défaut Tuning et questions diverses.
    Bonjour à tous,

    J'ai un souvenir que dans les requetes il vaut mieux preferer la multiplication que la division..

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select Moyenne * 0.5 from Salaire
    est à préférer à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select Moyenne/2 from Salaire
    mais je ne sais plus expliquer pourquoi

    Quelqu'un pourrai me redonner l'explication ?
    Aussi, pour tracer le temps d'execution sur Oracle, on utilise EXPLAIN ?

    Merci à tous

  2. #2
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    non, explain plan ne va pas faire de différence. Je n'ai jamais entendu cet argument et je me demande quelles sont les sources de ton souvenir

    Cependant un petit test avec "set timing on" semble te donner raison !

    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
     
    SQL> set timi on
    SQL> declare
      2    x number := 1e125;
      3  begin
      4    while (x>1e-125) loop
      5      x:= x/1.024;
      6    end loop;
      7    dbms_output.put_line(x);
      8  end;
      9  /
    9.987399874996398649557681861904371420640000000000000000000000000000000000000000000000000000000E-126
     
    PL/SQL procedure successfully completed.
     
    Elapsed: 00:00:00.14
    SQL> declare
      2    x number := 1e125;
      3  begin
      4    while (x>1e-125) loop
      5      x:= x*0.9765625;
      6    end loop;
      7    dbms_output.put_line(x);
      8  end;
      9  /
    9.987399874996398649557681861904371420640000000000000000000000000000000000000000000000000000000E-126
     
    PL/SQL procedure successfully completed.
     
    Elapsed: 00:00:00.06

  3. #3
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    peut-être parceque lorsque tu effectues une opération

    a/b

    Oracle doit d'abord s'assurer que b est non-null...

  4. #4
    Membre confirmé Avatar de Arvulis
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 117
    Par défaut
    Citation Envoyé par laurentschneider
    peut-être parceque lorsque tu effectues une opération

    a/b

    Oracle doit d'abord s'assurer que b est non-null...

    Oui c'est peut être ça !
    Mais c'est vrai que c'est un peu fou ce truc

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 45
    Par défaut
    Cette différence de temps de calcul ne dépend pas d'Oracle.
    C'est juste d'un point de vue du processeur, que la division est beaucoup plus coûteuse que la multiplication.

  6. #6
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    si tu le dis... une référence pour appuyer ton propos?

Discussions similaires

  1. [C# 2.0] FlowLayoutPanel, questions diverses
    Par murlock dans le forum Windows Forms
    Réponses: 1
    Dernier message: 26/05/2006, 17h01
  2. [XSLT][XPath] Questions diverses
    Par progamer54 dans le forum XSL/XSLT/XPATH
    Réponses: 11
    Dernier message: 10/05/2006, 12h19
  3. [DW8] Questions diverses sur le logicie
    Par syn_42 dans le forum Dreamweaver
    Réponses: 3
    Dernier message: 01/03/2006, 17h23
  4. Petites questions diverses
    Par Fouflarage dans le forum Débuter
    Réponses: 7
    Dernier message: 29/11/2005, 13h43
  5. Questions diverses sur TIBDataset et TDBGrid
    Par AlexB59 dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/11/2005, 17h14

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