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 :

[9i] Optimisation de requête


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 560
    Par défaut Optimisation de requête
    Salut,

    Voilà je m'aperçois que j'ai une requête qui prend pas mal de temps CPU, donc je cherche à l'améliorer. N'étant pas expert, quelqu'un peut-il me faire des suggestions ?

    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
    31
    32
    SELECT   HE.C_SITE,
             HE.C_ESPACE,
             HE.C_EMETTEUR,
             '' AS L_DENOM_SOCIALE,
             GM.C_GRP_MODULE,
             GM.L_GRP_MODULE,
             0 AS ACCES_AV,
             0 AS ACCES_AP,
             (CASE 
                WHEN TRIM(AUTH.ID_CONFIG) = 'CACEIS' THEN '01 - NOM1'
                WHEN TRIM(AUTH.ID_CONFIG) = 'NOM2' THEN '02 - NOM3'
                ELSE 'non renseigné'
              END) AS C_CONF
    FROM     IODA.HABILITATION_EMET HE,
             IODA.GRP_MODULE_MODULE GMM,
             IODA.GROUPE_MODULE GM,
             IODA.ESPACE_GRP_MODULE EGM,
             IODA.ESPACE ESP,
             IODA.AUTHENTIFICATION AUTH
    WHERE    ESP.C_SITE = 'OLIS'
             AND ESP.C_ESPACE = 'EMETTEUR'
             AND HE.C_SITE = ESP.C_SITE
             AND HE.C_ESPACE = ESP.C_ESPACE
             AND ESP.C_SITE = EGM.C_SITE
             AND ESP.C_ESPACE = EGM.C_ESPACE
             AND EGM.C_GRP_MODULE = GM.C_GRP_MODULE
             AND GM.C_GRP_MODULE = GMM.C_GRP_MODULE
             AND GMM.C_MODULE = HE.C_MODULE
             AND HE.C_EMETTEUR = AUTH.C_EMETTEUR
    GROUP BY HE.C_SITE,HE.C_ESPACE,HE.C_EMETTEUR,GM.C_GRP_MODULE,
             GM.L_GRP_MODULE,AUTH.ID_CONFIG
    ORDER BY HE.C_EMETTEUR
    Merci pour tout complément d'info .

  2. #2
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    Comment peut on vous aider a optimiser une requete sans les infos minimums !?!?

    Volumetrie des tables, liste des index, explain plan, type de SGBD, ...

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 560
    Par défaut
    J'utilise un SGBD de type ORACLE 9.1 et l'analyseur de requêtes que j'utilise est TOAD. L'explain plan que me donne TOAD est le suivant:

    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
     
    Operation	Object Name	Rows	Bytes	Cost	Object Node
     
    SELECT STATEMENT Optimizer Mode=CHOOSE		7 K	 	11106  	 	      	             	 
      SORT ORDER BY		7 K	1 M	11106  	 	      	             	 
        SORT GROUP BY		7 K	1 M	11106  	 	      	             	 
          HASH JOIN		418 K	67 M	225  	 	      	             	 
            HASH JOIN		123  	18 K	9  	 	      	             	 
              NESTED LOOPS		19  	2 K	5  	 	      	             	 
                HASH JOIN		59  	4 K	5  	 	      	             	 
                  NESTED LOOPS		59  	2 K	2  	 	      	             	 
                    INDEX UNIQUE SCAN	IODA.PK_ESPACE	1  	14  	 	 	      	             	 
                    INDEX FULL SCAN	IODA.PK_GRP_MODE_MOD	59  	2 K	1  	 	      	             	 
                  TABLE ACCESS FULL	IODA.GROUPE_MODULE	32  	1 K	2  	 	      	             	 
                INDEX UNIQUE SCAN	IODA.PK_ESP_GRP_MOD	1  	31  	 	 	      	             	 
              INDEX FAST FULL SCAN	IODA.PK_HABILITATION_EMET	343  	13 K	3  	 	      	             	 
            TABLE ACCESS FULL	IODA.AUTHENTIFICATION	128 K	1 M	215

  4. #4
    Membre expérimenté Avatar de gwadakillah
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    235
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2005
    Messages : 235
    Par défaut
    dans les dernières versions de TOAD , tu as un outil qui te permet d'optimiser les requetes... (Quest SQL Optimizer)
    C'est vachement pratique car il te propose différents plans d'éxécutions, te propose de mettre des index la ou il en a besoin pour optimiser les requetes que tu veux optimiser

  5. #5
    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
    le mélange hash-join et nested loop est rarement performant (pour ne pas dire jamais )

    Il faut se débarasser des FULL TABLE SCAN, éventuellement, en créant des indexes.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 560
    Par défaut
    Merci pour l'info mais je ne vois pas ce fameux utilitaire Quest SQL Optimizer, j'ai la version TOAD V8.

  7. #7
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    Option payante !

Discussions similaires

  1. [Access] Optimisation performance requête - Index
    Par fdraven dans le forum Access
    Réponses: 11
    Dernier message: 12/08/2005, 14h30
  2. Optimisation de requête avec Tkprof
    Par stingrayjo dans le forum Oracle
    Réponses: 3
    Dernier message: 04/07/2005, 09h50
  3. 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
  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