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. #21
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Citation Envoyé par mnitu Voir le message
    Non je n'ai pas toujours raison simplement j'esaie d'argumenter mon point de vue.
    Il y a 2 types d'argumentations, selon moi. La positive, consistant à apporter un conseil ou une solution, et la négative qui consiste à ne chercher que ce qui ne va pas dans les autres propositions.
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  2. #22
    Membre expérimenté Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Points : 1 332
    Points
    1 332
    Par défaut
    les optimisations 7 evidemement peuvent deconcerter les novices
    mais il y a les fondamentaux !


    Pour les versions plus actulles

    il y a un lien ici

    http://www.dba-village.com/dba/villa...A=0&SortA=Date

    bon ce reprend quan meme en gros ce qui a été dis auparavant
    (les fondamentaux):
    indexing ,explain plan ....

    sinon lire la doc

    http://download.oracle.com/docs/cd/B...b14211/toc.htm

    asktom.oracle.com tahiti.oracle.com otn.oracle.com

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.


    phrase chinoise issue du Huainanzi

  3. #23
    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
    Je ne vois pas pour quoi " vous critiquer" ça sera "non constructif". Il me semble que j'ai argumenté mes remarques, n'est pas vrai ?
    c'est intéressant de nous corriger, mais le plus important n'est-il pas de répondre au premier post ?

  4. #24
    Membre expert
    Avatar de Emmanuel Lecoester
    Profil pro
    Inscrit en
    Février 2003
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    Points : 3 266
    Points
    3 266
    Par défaut
    Citation Envoyé par romu92 Voir le message
    Bonjour,

    je cherche à optimiser des requêtes SQL trop longues à exécuter.
    Existent t'ils des règles standards pour optimiser une requête SQL du type :
    - l'importance de l'ordre des tables dans les jointures INNER JOIN?
    plus d'importance avec le CBO. On te trouvera toujours un cas aux limites mais si les stats et les histo sont à jour tu auras à 99% toujours le même plan quelque soit l'ordre des tables.
    - préférer une clause IN pour filtrer par rapport à une autre table plutôt qu'une clause INNER JOIN?
    pourquoi ?
    - préférer les jointures dans le WHERE plutôt que dans l'INNER JOIN?
    c'est une écriture différente et l'optimiseur (CBO j'entends) te sortira le même plan.
    - l'importance des conditions dans la clause WHERE?
    Peu importe. Sauf dans le cas concet ou tu fais des outer join avec des restrictions sur la table ouverte (çà fait drole la première fois)
    merci pour ces infos,

    Romu
    Le mieux c'est l'explain plan et tu adaptes la requête . Les grands principes existent mais la mise en pratique peut être moins puriste que les principes
    Emmanuel Lecoester
    => joomla addict.

  5. #25
    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 SheikYerbouti Voir le message
    Il y a 2 types d'argumentations, selon moi. La positive, consistant à apporter un conseil ou une solution, et la négative qui consiste à ne chercher que ce qui ne va pas dans les autres propositions.
    Voilà ce qu'on peut trouver aussi comme conseils d'optimisation (ce ne sont que des conneries). Je me demande quel type d'argumentation peut t'on faire.

  6. #26
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Et bien oui, encore une fois, une proposition hautement constructive. Merci pour nous
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  7. #27
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    mnitu, comme il n'existe pas de tuto sur l'optimisation (sauf erreur de ma part) et comme tu as l'air de maîtriser ce sujetpeut-être pourrais-tu en rédiger un. Ce serait constructif et utile pour plus d'un.
    Car à moins de suivre une formation oracle, il est difficile de trouver des informations fiables sur ce sujet.
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  8. #28
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut !

    Un peu comme tout le monde... :
    - Ne pas casser les indexes en appliquant des fonctions sur les colonnes jointes
    - Vérifier le plan d'exécution et le cas échéant utiliser des hints, parce que même si l'optimiseur progresse, il y a des spécificités dans la distribution de tes données, dans la corrélation qui existe entre tes différentes colonnes, ..., que les statistiques ne permettent de détecter...
    - Etre particulièrement vigilent avec les vues et inline views, parce que ça se transforme parfois de manière suboptimal...
    (je dis ça parce que j'ai vu récemment des merge pas sympas, ou des prédicats que j'aurais préféré voir pushés)

    Mnitu : je trouve ton lien génial !
    (par contre, c'est dommage que les commentaires d'insulte se trouvent en bas : il y a des gens qui pourraient croire que l'article est pertinent...)

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

  9. #29
    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
    Voilà ce qu'on peut trouver aussi comme conseils d'optimisation (ce ne sont que des conneries). Je me demande quel type d'argumentation peut t'on faire.
    c'est peut-être pas que des conneries mais ça part mal :
    1) FTS (Full Table Scans) are always bad and Index usage is always good.

    Voila une assertion bien cavalière est particulièrement fausse

    J'aime autant un tuto qui peut être obsolète sans être faux que ce type de lien qui raconte n'importe quoi

  10. #30
    Membre expert
    Avatar de Emmanuel Lecoester
    Profil pro
    Inscrit en
    Février 2003
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    Points : 3 266
    Points
    3 266
    Par défaut
    J'aime autant un tuto qui peut être obsolète sans être faux que ce type de lien qui raconte n'importe quoi
    +1 orafrance
    Emmanuel Lecoester
    => joomla addict.

  11. #31
    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
    @plainer
    Et pourquoi pas si cella intéresse les gens vraiment.

    @sheikyerbouti
    J’ai déjà poste ce lien « constructif » sur un autre fil de discussion. Et celle ci aussi .
    Par ailleurs je trouve que pointer ce qui ne va pas dans une affirmation ou un exemple c’est toute à fait constructif qu’une démi-vérité. Ce n’est pas que je ne suis pas d’accord avec vous dans vos conseils c’est seulement que, pour une partie
    • Ils sont vrai dans certaines contextes mais pas toujours et vous ne le précisez pas
    • Ils sont dépassés par l’évolution de l’optimisateur et cella n’est pas précisé non plus.

    La où nous somme (peut être) d’accord est que le document a un peu (trop) vieilli.
    Et c’est aussi vrai que je n’aime pas trop les conseils de type « Exists est toujours mieux que IN », etc. Cella dépende du contexte, de la version de l’optimiseur, etc. Mais bon je ne tiens pas a vous convaincre sur ce dernière point.

    A propos vous ne m’avez pas répondu d’une manière constructif sur ma question sur l’ordre des colonnes dans un index composite.

    @orafrace
    Si ma blague concernant le Saint Graal vous a gêné je fait mon mea culpa.

  12. #32
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Citation Envoyé par mnitu Voir le message
    @plainer
    Et pourquoi pas si cella intéresse les gens vraiment.
    Moi, en tout cas cela m'intéresse vraiment. Et je pense ne pas être le seul.
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  13. #33
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    A propos vous ne m’avez pas répondu d’une manière constructif sur ma question sur l’ordre des colonnes dans un index composite.
    Les colonnes les plus sélectives peuvent être des références "fortes".
    Si les données de la table sont découpées de manière logique selon plusieurs colonnes, le fait de mettre des colonnes les moins sélectives au début peut permettre à l'utilisation de l'index à plus de requêtes...

    Exemple ?

    Employes (IdDep, Idemploye, Salaire).

    Mettre un indexe sur (IdEmploye, IdDep), c'est un peu dommage, vu que dans l'autre sens, (IdDep, IdEmploye), ça aurait permis par exemple de calculer les salaires moyen par département assez facilement...

    Par ailleurs, si vraiment on a besoin d'une recherche sur IdEmploye sans le IdDep, on peut supposer que le skip scan ne sera pas trop mauvais (à moins qu'il y ait des millions de départements avec un gens tout seul à chaque fois...)

    [EDIT]
    Bon, j'ai aussi vaguement la sensation que le choix de l'ordre des colonnes impacte fortement le clustering factor.
    ... et je ne pense pas que mettre systématiquement la colonne la plus sélective en premier soit la bonne solution de ce point de vue
    => Mais tout ça ne sont que des suppositions sans aucun fondement !

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

  14. #34
    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
    @orafrace
    Si ma blague concernant le Saint Graal vous a gêné je fait mon mea culpa.
    Pas vraiment, ce qui me gène c'est de critiquer 2 réponses dont une qui contient une tutoriel rédigé par celui qui répond, alors que tu ne proposes pas une seule ressource rédigé par toi même. Un tuto a été écrit et proposé par Sheikyerbouti et ce tuto reste d'actualité même si ce qui justifie les recommandations sont obsolétes... venir sabrer ce tuto parce que le CBO s'est amélioré, je trouve pas ça constructif. En effet, c'est pas parce qu'Oracle s'efforce de prendre en compte les mauvaises habitudes des users qu'il ne faut pas corriger ces habitudes.

    Après, tes remarques sont exactes et permettent de corriger nos réponses, c'est très bien mais ce serait encore mieux si tu proposais des ressources parfaites ou une réponse personnelle et pas seulement un partage de ton bookmark

  15. #35
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Et si la solution était de remettre le tutoriel de Sheikyerbouti à jour ?

    Il me semble que le but d'un site communautaire comme celui-ci est bien le partage de la connaissance (en français en l'occurence) et non pas de se tirer dans les jambes (pour ça nous avons des collègues de boulot).

  16. #36
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Et si la solution était de remettre le tutoriel de Sheikyerbouti à jour ?
    Justement nous recherchons des rédacteurs
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  17. #37
    Membre expérimenté Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Points : 1 332
    Points
    1 332
    Par défaut
    J'ai surtout l'impression que les administrateurs oracle ont tendance a faire comme les dentistes, c'est a dire , critiquer ce que font les confreres ....

    Ah cest untel qui a mis ce dentier, ah c'est lui qui a mis fais ca sur cette dent..

    moi j'aurais fais ci , fais ca ...

    C'est ptet humain , mais le resultat est que le client final se regale de ce genre de pagaille .....

    asktom.oracle.com tahiti.oracle.com otn.oracle.com

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.


    phrase chinoise issue du Huainanzi

  18. #38
    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
    Je ne pense pas... pour ma part, j'ai plus souvent vu des DBA travailler avec le DBA en place que contre lui

    Après, bah le métier de DBA étant sous-estimé, c'est un rôle qu'est souvent tenu par un mec qui n'y connait pas grand chose et forcément il y a des erreurs de faites... mais dans ce cas, on critique le choix de la personne plutôt que le malheureux qui a été parachuté là

  19. #39
    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 pacmann Voir le message
    ...

    [EDIT]
    Bon, j'ai aussi vaguement la sensation que le choix de l'ordre des colonnes impacte fortement le clustering factor.
    ... et je ne pense pas que mettre systématiquement la colonne la plus sélective en premier soit la bonne solution de ce point de vue
    => Mais tout ça ne sont que des suppositions sans aucun fondement !
    Merci pacmann pour ton effort mais franchement si toi même n’est pas convaincu …
    Mais, j'ai peur que je resterai sur ma faim en ce qui concerne ce conseil.

  20. #40
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Bah, je sais pas trop comment le clustering factor est calculé, mais d'une certaine manière, ça mesure le degré de regroupement dans les blocs des valeurs adjacentes de l'index...

    Donc bon, je me dis que dans certains cas, "hiérarchiser" les colonnes de son indexe selon des critères logiques en partant du plus large, pourrait avoir des chances d'augmenter ce degré de regroupement...

    Bien entendu, ça dépend de comment les données sont alimentées... mais le but était justement de ne pas opter pour une solution dogmatique, non ?

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

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