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 :

Problème Requête SQL


Sujet :

SQL Oracle

  1. #21
    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
    la dernière requête ne fonctionne pas ?

  2. #22
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 47
    Par défaut
    Citation Envoyé par orafrance Voir le message
    la dernière requête ne fonctionne pas ?
    Non.
    Elle tourne infiniment.

  3. #23
    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
    tiens... étrange... faudrait voir les explain plan.

    Tu peux essayer :
    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
    33
     
    SELECT 1 FROM 
    (SELECT 1
      FROM bde_sim_site_reel bsr 
      	   INNER JOIN bde_sim_base_dr bdr
           ON bsr.code_dr = bdr.dr_code
           INNER JOIN bde_sim_site_reel_mod_val mod_val_0
           ON mod_val_0.sit_sit_key = bsr.sit_sit_key
     WHERE bdr.urm_code = 'PA'
       AND bsr.es = '1'
       AND mod_val_0.sit_mod_key = 418 AND mod_val_0.sit_mod_obj_val NOT IN ('2367', '1946', '2443')
     UNION ALL
    SELECT 1
      FROM bde_sim_site_reel bsr 
      	   INNER JOIN bde_sim_base_dr bdr
           ON bsr.code_dr = bdr.dr_code
           INNER JOIN bde_sim_site_reel_mod_val mod_val_0
           ON mod_val_0.sit_sit_key = bsr.sit_sit_key
     WHERE bdr.urm_code = 'PA'
       AND bsr.es = '1'
       AND mod_val_0.sit_mod_key = 586 AND mod_val_1.sit_mod_obj_val != '2011'
    )
     WHERE NOT EXISTS (
              SELECT 1
                FROM bde_sim_site_reel 
    				 INNER JOIN bde_sim_site_reel_mod_val
                     ON bde_sim_site_reel_mod_val.sit_sit_key = bde_sim_site_reel.sit_sit_key
                     INNER JOIN bde_sim_base_dr
                     ON bde_sim_site_reel.code_dr = bde_sim_base_dr.dr_code
               WHERE bde_sim_site_reel_mod_val.sit_mod_key IN (534, 483)
                 AND bde_sim_site_reel_mod_val.sit_mod_obj_val = '0'
                 AND bde_sim_base_dr.urm_code = 'PA'
                 AND bde_sim_site_reel.sit_sit_key = bsr.sit_sit_key)
    et sans le NOT EXISTS pour voir quelle partie de la requête pose problème

  4. #24
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 47
    Par défaut
    Voici l'explain plan de la requête initiale.
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    Plan hash value: 1517578016
     
    ----------------------------------------------------------------------------------------------------------------------
    | Id  | Operation                        | Name                      | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
    ----------------------------------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT                 |                           |   153 |   472K|       | 12547   (3)| 00:02:31 |
    |*  1 |  FILTER                          |                           |       |       |       |            |          |
    |*  2 |   HASH JOIN                      |                           |  1568 |  4840K|  4472K| 12547   (3)| 00:02:31 |
    |*  3 |    HASH JOIN                     |                           |  2132 |  4440K|  3720K|  8038   (3)| 00:01:37 |
    |*  4 |     HASH JOIN                    |                           |  3405 |  3674K|       |  3666   (3)| 00:00:44 |
    |*  5 |      HASH JOIN                   |                           |  3970 |   298K|       |    52   (2)| 00:00:01 |
    |*  6 |       TABLE ACCESS FULL          | BDE_SIM_BASE_DR           |    11 |    66 |       |     5   (0)| 00:00:01 |
    |*  7 |       TABLE ACCESS FULL          | BDE_SIM_SITE_REEL         | 18768 |  1301K|       |    47   (3)| 00:00:01 |
    |*  8 |      TABLE ACCESS FULL           | BDE_SIM_SITE_REEL_MOD_VAL | 16097 |    15M|       |  3612   (3)| 00:00:44 |
    |*  9 |     TABLE ACCESS FULL            | BDE_SIM_SITE_REEL_MOD_VAL | 11753 |    11M|       |  3612   (3)| 00:00:44 |
    |* 10 |    TABLE ACCESS FULL             | BDE_SIM_SITE_REEL_MOD_VAL | 13797 |    13M|       |  3612   (3)| 00:00:44 |
    |  11 |   NESTED LOOPS                   |                           |   151 |   154K|       |    29   (4)| 00:00:01 |
    |  12 |    NESTED LOOPS                  |                           |     1 |    23 |       |     3   (0)| 00:00:01 |
    |  13 |     TABLE ACCESS BY INDEX ROWID  | BDE_SIM_SITE_REEL         |     1 |    17 |       |     2   (0)| 00:00:01 |
    |* 14 |      INDEX UNIQUE SCAN           | BDE_SIM_SITE_REEL_PK      |     1 |       |       |     1   (0)| 00:00:01 |
    |* 15 |     TABLE ACCESS BY INDEX ROWID  | BDE_SIM_BASE_DR           |    11 |    66 |       |     1   (0)| 00:00:01 |
    |* 16 |      INDEX UNIQUE SCAN           | PK_BDE_BASE_DR            |     1 |       |       |     0   (0)| 00:00:01 |
    |* 17 |    TABLE ACCESS FULL             | BDE_SIM_SITE_REEL_MOD_VAL |   151 |   151K|       |    26   (4)| 00:00:01 |
    |  18 |     NESTED LOOPS                 |                           |    79 | 83029 |       |    96   (3)| 00:00:02 |
    |  19 |      NESTED LOOPS                |                           |     1 |    23 |       |     3   (0)| 00:00:01 |
    |  20 |       TABLE ACCESS BY INDEX ROWID| BDE_SIM_SITE_REEL         |     1 |    17 |       |     2   (0)| 00:00:01 |
    |* 21 |        INDEX UNIQUE SCAN         | BDE_SIM_SITE_REEL_PK      |     1 |       |       |     1   (0)| 00:00:01 |
    |* 22 |       TABLE ACCESS BY INDEX ROWID| BDE_SIM_BASE_DR           |    11 |    66 |       |     1   (0)| 00:00:01 |
    |* 23 |        INDEX UNIQUE SCAN         | PK_BDE_BASE_DR            |     1 |       |       |     0   (0)| 00:00:01 |
    |* 24 |      TABLE ACCESS FULL           | BDE_SIM_SITE_REEL_MOD_VAL |    79 | 81212 |       |    93   (3)| 00:00:02 |
    ----------------------------------------------------------------------------------------------------------------------
     
    Predicate Information (identified by operation id):
    ---------------------------------------------------
     
       1 - filter( NOT EXISTS (SELECT /*+ */ 0 FROM "BDE_SIM_BASE_DR" 
                  "BDE_SIM_BASE_DR","BDE_SIM_SITE_REEL_MOD_VAL" "BDE_SIM_SITE_REEL_MOD_VAL","BDE_SIM_SITE_REEL" 
                  "BDE_SIM_SITE_REEL" WHERE "BDE_SIM_SITE_REEL"."SIT_SIT_KEY"=:B1 AND 
                  "BDE_SIM_SITE_REEL_MOD_VAL"."SIT_MOD_KEY"=483 AND "BDE_SIM_SITE_REEL_MOD_VAL"."SIT_MOD_OBJ_VAL"='0' AND 
                  "BDE_SIM_SITE_REEL_MOD_VAL"."SIT_SIT_KEY"=:B2 AND "BDE_SIM_SITE_REEL"."CODE_DR"="BDE_SIM_BASE_DR"."DR_CODE" 
                  AND "BDE_SIM_BASE_DR"."URM_CODE"='PA') OR  NOT EXISTS (SELECT /*+ */ 0 FROM "BDE_SIM_BASE_DR" 
                  "BDE_SIM_BASE_DR","BDE_SIM_SITE_REEL_MOD_VAL" "BDE_SIM_SITE_REEL_MOD_VAL","BDE_SIM_SITE_REEL" 
                  "BDE_SIM_SITE_REEL" WHERE "BDE_SIM_SITE_REEL"."SIT_SIT_KEY"=:B3 AND 
                  "BDE_SIM_SITE_REEL_MOD_VAL"."SIT_MOD_KEY"=534 AND "BDE_SIM_SITE_REEL_MOD_VAL"."SIT_MOD_OBJ_VAL"='0' AND 
                  "BDE_SIM_SITE_REEL_MOD_VAL"."SIT_SIT_KEY"=:B4 AND "BDE_SIM_SITE_REEL"."CODE_DR"="BDE_SIM_BASE_DR"."DR_CODE" 
                  AND "BDE_SIM_BASE_DR"."URM_CODE"='PA'))
       2 - access("MOD_VAL_4"."SIT_SIT_KEY"="BSR"."SIT_SIT_KEY")
       3 - access("MOD_VAL_0"."SIT_SIT_KEY"="BSR"."SIT_SIT_KEY")
       4 - access("MOD_VAL_1"."SIT_SIT_KEY"="BSR"."SIT_SIT_KEY")
       5 - access("BSR"."CODE_DR"="BDR"."DR_CODE")
       6 - filter("BDR"."URM_CODE"='PA')
       7 - filter("BSR"."ES"='1')
       8 - filter("MOD_VAL_1"."SIT_MOD_KEY"=586 AND "MOD_VAL_1"."SIT_MOD_OBJ_VAL"<>'2011')
       9 - filter("MOD_VAL_0"."SIT_MOD_KEY"=418 AND "MOD_VAL_0"."SIT_MOD_OBJ_VAL"<>'2367' AND 
                  "MOD_VAL_0"."SIT_MOD_OBJ_VAL"<>'1946')
      10 - filter("MOD_VAL_4"."SIT_MOD_KEY"=418 AND "MOD_VAL_4"."SIT_MOD_OBJ_VAL"<>'2443')
      14 - access("BDE_SIM_SITE_REEL"."SIT_SIT_KEY"=:B1)
      15 - filter("BDE_SIM_BASE_DR"."URM_CODE"='PA')
      16 - access("BDE_SIM_SITE_REEL"."CODE_DR"="BDE_SIM_BASE_DR"."DR_CODE")
      17 - filter("BDE_SIM_SITE_REEL_MOD_VAL"."SIT_MOD_KEY"=483 AND 
                  "BDE_SIM_SITE_REEL_MOD_VAL"."SIT_MOD_OBJ_VAL"='0' AND "BDE_SIM_SITE_REEL_MOD_VAL"."SIT_SIT_KEY"=:B1)
      21 - access("BDE_SIM_SITE_REEL"."SIT_SIT_KEY"=:B1)
      22 - filter("BDE_SIM_BASE_DR"."URM_CODE"='PA')
      23 - access("BDE_SIM_SITE_REEL"."CODE_DR"="BDE_SIM_BASE_DR"."DR_CODE")
      24 - filter("BDE_SIM_SITE_REEL_MOD_VAL"."SIT_MOD_KEY"=534 AND 
                  "BDE_SIM_SITE_REEL_MOD_VAL"."SIT_MOD_OBJ_VAL"='0' AND "BDE_SIM_SITE_REEL_MOD_VAL"."SIT_SIT_KEY"=:B1)
     
    Note
    -----
       - dynamic sampling used for this statement

  5. #25
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    C'est clair qu'il te manque un index sur bde_sim_site_reel_mod_val.sit_sit_key

  6. #26
    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
    vu le nombre de FULL SCAN il doit probablement manquer des indexes. Vérifies que les colonnes sur lesquelles portent les jointures sont bien incluses dans des indexes.

    URM_CODE par exemple semble être un bon candidat dans BDE_SIM_BASE_DR. Et évidemment au moins sit_sit_key doit être dans un index sur les 3 tables en FTS puisqu'apparemment c'est l'identifiant

    Moi j'essayerai :
    sur bde_sim_site_reel_MOD_VAL : SIT_MOD_KEY,SIT_MOD_OBJ_VAL,sit_sit_key (l'ordre dépend de la PK de cette table, peut-être que SIT_MOD_KEY,sit_sit_key,SIT_MOD_OBJ_VAL sera mieux exploiter par d'autres requêtes)
    sur bde_sim_base_dr : dr_code,urm_code
    sur bde_sim_site_reel : sit_sit_key,code_dr, es

  7. #27
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 47
    Par défaut
    YAHOOOOOOOOOOOOOO

    J'ai rajouté 2 index dans bde_sim_site_reel_mod_val : sit_sit_key et sit_mod_key.
    Le temps d'execution est de 2 secondes.
    Merci à toi et a Mcm pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Problème requête SQL
    Par mandaillou dans le forum Langage SQL
    Réponses: 15
    Dernier message: 03/10/2005, 12h37
  2. Problème requête SQL dans page ASP
    Par rocs dans le forum ASP
    Réponses: 14
    Dernier message: 26/07/2005, 16h38
  3. problème requête sql
    Par psychoBob dans le forum Langage SQL
    Réponses: 1
    Dernier message: 10/07/2005, 18h50
  4. problème requête sql
    Par perfectdams dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 21/06/2005, 19h09
  5. Réponses: 8
    Dernier message: 23/10/2003, 17h22

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