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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 56
    Par défaut Principes de base d'optimisation de requête
    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?
    - préférer une clause IN pour filtrer par rapport à une autre table plutôt qu'une clause INNER JOIN?
    - préférer les jointures dans le WHERE plutôt que dans l'INNER JOIN?
    - l'importance des conditions dans la clause WHERE?

    merci pour ces infos,

    Romu

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    l'important c'est de bien indexer les tables et calculer les stats, après, l'écriture de la requête importe peu.

  3. #3
    Expert confirmé 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
    Par défaut
    Citation Envoyé par orafrance Voir le message
    l'important c'est de bien indexer les tables et calculer les stats, après, l'écriture de la requête importe peu.
    Ca c'est vraiment du Saint Graal.

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    C'est à dire ?

    Sinon, pour info : http://www.developpez.net/forums/m2548995-2/

  5. #5
    Expert confirmé 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
    Par défaut
    Citation Envoyé par orafrance Voir le message
    C'est à dire ?

    Sinon, pour info : http://www.developpez.net/forums/m2548995-2/
    Oui, d'accord l'optimiseur se debrouille généralement bien! Mais je peux te montrer de requêtes assez simple où "l'écriture de la requête importe", pour exemple parce que elle impose le choix du plan (et je ne parle pas de hints).

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Oui, mais ça ne répond à aucune règle, juste trouver l'ordre qui permettra de trouver le bon plan dans le nombre de permutations autorisée. Enfin... si tu veux répondre à la question initiale, fais donc

  7. #7
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    Citation Envoyé par romu92 Voir le message
    - préférer une clause IN pour filtrer par rapport à une autre table plutôt qu'une clause INNER JOIN?
    Ne pas oublier la clause EXISTS qui peut apporter de net gain de performance, mais bien sûr ça reste du cas par cas.
    A noter que la jointure n'est pas forcément équivalente en terme de résultat.

  8. #8
    Expert confirmé
    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

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    très bon tuto

  10. #10
    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
    Par défaut
    Ah oui, super intéressant, merci Skeik

  11. #11
    Expert confirmé
    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
    Par défaut
    Enfin, il a tout de même un peu vieilli...

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

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    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

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