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 :

Principes de base d'optimisation de requête


Sujet :

SQL Oracle

  1. #61
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par orafrance Voir le message
    On peut aussi imaginer que les colonnes les plus sélectives sont moins encline à être modifiée et donc, créer les indexes avec les colonnes par ordre de sélectivité limiterait le chainage et la fragmentation des tablespace. Après, en terme de performance on peut aussi imaginer que le parser consomme moins de CPU s'il n'a pas à se taper les permutations qui lui permettront de retrouver l'ordre le plus adéquat.

    ...
    On peut imaginer beaucoup des choses mais cela ne signifie pas que c'est la vérité. Mais en imaginant en plus certaines tests on peut s'apercevoir de la validité/invalidité des choses.

    Bref, le tutoriel il est bon et utile surtout si vous prenez en compte que :
    • il est toute aussi important de comprendre pourquoi telle règle est vrai et dans quelle contexte. Cella vous permet de l'ignorer quand la situation l'impose. Les règles sont fait aussi pour être enfreintes.
    • les choses changent est évoluent d'une version à une autre et cela implique que certaines règles peuvent aussi changer.

    Ces sont les deux sources de base de toute sorte des mythes.

    Je ne peux que regretter que le dialogue s'amorce assez difficilement et que parfois des arguments non liées à la pertinence des remarques sont avancés. Mais j'ai l'impression que parfois les gens considèrent qu'il est plus important de défendre leurs positions que des les démontrer voir de les voir partiellement infirmés. (Et comme toute règle de base elle doit s'appliquer à moi aussi bien sûr)

  2. #62
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Citation Envoyé par mnitu Voir le message
    On peut imaginer beaucoup des choses mais cela ne signifie pas que c'est la vérité. Mais en imaginant en plus certaines tests on peut s'apercevoir de la validité/invalidité des choses.
    La pratique ne vaut que pour vérifier les théories Si tu as du temps pour tester, ça pourrait être intéressant En attendant faudra se suffire de mes théories

  3. #63
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par orafrance Voir le message
    La pratique ne vaut que pour vérifier les théories
    Ou pour les infirmer.

  4. #64
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    complétement

  5. #65
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par vicenzo Voir le message
    Oracle 10g et > ont pas mal modifié la gestion de la sélection des index.

    Oracle s'est amélioré et utilise plus facilement les index qu'avant (avant, il était plutôt bête et discipliné... maintenant il est plus imaginatif )

    Donc, se prendre la tête sur des exemples précis sans mention de version ne sert à rien.
    ...
    J'avais fait le test sur une base 11g parce que c'est ce que j'ai à ma disposition chez moi. Par curiosité j'ai repris le test proposé en Oracle 9
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SQL> select banner from v$version;
     
    BANNER
    ----------------------------------------------------------------
    Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
    PL/SQL Release 9.2.0.1.0 - Production
    CORE    9.2.0.1.0       Production
    TNS for 32-bit Windows: Version 9.2.0.1.0 - Production
    NLSRTL Version 9.2.0.1.0 - Production
    et voilà le résultat.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SQL> r
      1* alter session set optimizer_goal = choose
     
    Session modifiée.
     
    SQL> SELECT * FROM TEST3  WHERE col3 BETWEEN 48 AND 52 ;
     
    Plan d'exécution
    ----------------------------------------------------------
       0      SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=7 Bytes=77)
       1    0   INDEX (FULL SCAN) OF 'IX2_TEST3' (NON-UNIQUE) (Cost=5 Card
              =7 Bytes=77)
    En analysant j'ai l'impression que dans le test proposé on avait oublié de calculer les statistiques après avoir remplis la table test3.

Discussions similaires

  1. Optimisation de requête avec Tkprof
    Par stingrayjo dans le forum Oracle
    Réponses: 3
    Dernier message: 04/07/2005, 09h50
  2. Optimiser une requête SQL d'un moteur de recherche
    Par kibodio dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/03/2005, 20h55
  3. [principe de base] Objets composés d'objets
    Par brousaille dans le forum JDBC
    Réponses: 11
    Dernier message: 09/02/2005, 19h13
  4. optimisation des requêtes
    Par yech dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 21/09/2004, 19h03
  5. Optimisation de requête
    Par olivierN dans le forum SQL
    Réponses: 10
    Dernier message: 16/12/2003, 10h09

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