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

Langage SQL Discussion :

Requête lente lors de la consultation des enreg.


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 69
    Points : 43
    Points
    43
    Par défaut Requête lente lors de la consultation des enreg.
    Bonjour,

    J'ai une requête qui me retroune des enreg. quand j'essaie de créer une vue sur ce select, il prend bcp (trop) de temps.

    Soit le code du select :

    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
     
    SELECT SD_MVTPRES.STATUS SD_MVTPRES_STATUS
    ,SD_MVTPRES.DB_ELEMENT_ID SD_MVTPRES_DB_ELEMENT_ID
    ,SD_MVTPRES.ID SD_MVTPRES_ID
    ,SD_MVTPRES.SD_MVT_TER_ID SD_MVTPRES_SD_MVT_TER_ID
    ,SD_MVTPRES.INT_ROLE_EMP_ID SD_MVTPRES_INT_ROLE_EMP_ID
    ,SD_MVTPRES.INT_ROLE_PAT_ID SD_MVTPRES_INT_ROLE_PAT_ID
    ,SD_MVTPRES.AS_PRODUIT_ID SD_MVTPRES_AS_PRODUIT_ID
    ,SD_MVTPRES.DATE_PRESTATION SD_MVTPRES_DATE_PRESTATION
    ,SD_MVTPRES.SIGNE * SD_MVTPRES.DUREE SD_MVTPRES_DUREE
    ,SD_MVTPRES.SIGNE * SD_MVTPRES.NOMBRE SD_MVTPRES_NOMBRE
    ,SD_MVTPRES.SIGNE * SD_MVTPRES.MONTANT SD_MVTPRES_MONTANT
    ,SD_MVTPRES.SIGNE SD_MVTPRES_SIGNE
    ,SD_MVTPRES.UNITE_DUREE SD_MVTPRES_UNITE_DUREE
    ,SD_MVTPRES.EST_AMBULATOIRE SD_MVTPRES_EST_AMBULATOIRE
    ,SD_MVTPRES.DO_GENRE_DOC_ID SD_MVTPRES_DO_GENRE_DOC_ID
    ,SD_MVTPRES.CHAINE_ZONES_SAISIES SD_MVTPRES_CHAINE_ZONES_SAISIE
    ,SD_MVTPRES.TP_TYPE_MAJO_FACT_CI SD_MVTPRES_TP_TYPE_MAJO_FACT_C
    ,SD_MVTPRES.TP_TYPE_MAJO_SAL_CI SD_MVTPRES_TP_TYPE_MAJO_SAL_CI
    ,SD_MVTPRES.TP_CAL_ENT_FACT_ID SD_MVTPRES_TP_CAL_ENT_FACT_ID
    ,SD_MVTPRES.TP_CAL_ENT_SAL_ID SD_MVTPRES_TP_CAL_ENT_SAL_ID
    ,SD_MVTPRES.SD_CAS_DOS_INTERV_ID SD_MVTPRES_SD_CAS_DOS_INTERV_I
    ,SD_MVTPRES.NO_DOCUM_VENTE SD_MVTPRES_NO_DOCUM_VENTE
    ,SD_MVTPRES.VARIANTE_PERIODE SD_MVTPRES_VARIANTE_PERIODE
    ,INT_IDROLE.NO_ROLE INT_IDROLE_EMP_NO_ROLE
    ,INT_IDROLE.ABREGE INT_IDROLE_EMP_ABREGE
    ,INT_IDROLE.NOM_AFFICHE INT_IDROLE_EMP_NOM_AFFICHE
    ,INT_IDROLE.INT_IDENT_ID INT_IDROLE_EMP_INT_IDENT_ID
    ,INT_IDROLE.AD_ADR_ID INT_IDROLE_EMP_AD_ADR_ID
    ,AS_PROD.REFERENCE_INT_1_PIC AS_PROD_REFERENCE_INT_1_PIC
    ,AS_PROD.REFERENCE_INT_2_PIC AS_PROD_REFERENCE_INT_2_PIC
    FROM SD_MVT_PRESTATION SD_MVTPRES
    ,AS_PRODUIT AS_PROD
    ,INT_IDENT_ROLE INT_IDROLE
      WHERE AS_PROD.ID=SD_MVTPRES.AS_PRODUIT_ID and
    INT_IDROLE.ID=SD_MVTPRES.INT_ROLE_EMP_ID;
    J'utilise le programme Toad, il me retourne très rapidement les premières lignes et quand j'essaie de consulter les derniers enreg. J'arrive généralement sur le message "End of channel communication".

    La table SD_MVT_PRESTATION contient un peu plus de 4 millions de lignes.

    Comme la vue est créée sur la totalité des lignes, elle prend beaucoup de temps pour se construire et généralement sa construction n'arrive pas a terme.

    Voici le plan d'exécution :

    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
     
    SELECT SD_MVTPRES.STATUS SD_MVTPRES_STATUS 
    ,SD_MVTPRES.DB_ELEMENT_ID SD_MVTPRES_DB_ELEMENT_ID 
    ,SD_MVTPRES.ID SD_MVTPRES_ID 
    ,SD_MVTPRES.SD_MVT_TER_ID SD_MVTPRES_SD_MVT_TER_ID 
    ,SD_MVTPRES.INT_ROLE_EMP_ID SD_MVTPRES_INT_ROLE_EMP_ID 
    ,SD_MVTPRES.INT_ROLE_PAT_ID SD_MVTPRES_INT_ROLE_PAT_ID 
    ,SD_MVTPRES.AS_PRODUIT_ID SD_MVTPRES_AS_PRODUIT_ID 
    ,SD_MVTPRES.DATE_PRESTATION SD_MVTPRES_DATE_PRESTATION 
    ,SD_MVTPRES.SIGNE * SD_MVTPRES.DUREE SD_MVTPRES_DUREE 
    ,SD_MVTPRES.SIGNE * SD_MVTPRES.NOMBRE SD_MVTPRES_NOMBRE 
    ,SD_MVTPRES.SIGNE * SD_MVTPRES.MONTANT SD_MVTPRES_MONTANT 
    ,SD_MVTPRES.SIGNE SD_MVTPRES_SIGNE 
    ,SD_MVTPRES.UNITE_DUREE SD_MVTPRES_UNITE_DUREE 
    ,SD_MVTPRES.EST_AMBULATOIRE SD_MVTPRES_EST_AMBULATOIRE 
    ,SD_MVTPRES.DO_GENRE_DOC_ID SD_MVTPRES_DO_GENRE_DOC_ID 
    ,SD_MVTPRES.CHAINE_ZONES_SAISIES SD_MVTPRES_CHAINE_ZONES_SAISIE 
    ,SD_MVTPRES.TP_TYPE_MAJO_FACT_CI SD_MVTPRES_TP_TYPE_MAJO_FACT_C 
    ,SD_MVTPRES.TP_TYPE_MAJO_SAL_CI SD_MVTPRES_TP_TYPE_MAJO_SAL_CI 
    ,SD_MVTPRES.TP_CAL_ENT_FACT_ID SD_MVTPRES_TP_CAL_ENT_FACT_ID 
    ,SD_MVTPRES.TP_CAL_ENT_SAL_ID SD_MVTPRES_TP_CAL_ENT_SAL_ID 
    ,SD_MVTPRES.SD_CAS_DOS_INTERV_ID SD_MVTPRES_SD_CAS_DOS_INTERV_I 
    ,SD_MVTPRES.NO_DOCUM_VENTE SD_MVTPRES_NO_DOCUM_VENTE 
    ,SD_MVTPRES.VARIANTE_PERIODE SD_MVTPRES_VARIANTE_PERIODE 
    ,INT_IDROLE.NO_ROLE INT_IDROLE_EMP_NO_ROLE 
    ,INT_IDROLE.ABREGE INT_IDROLE_EMP_ABREGE 
    ,INT_IDROLE.NOM_AFFICHE INT_IDROLE_EMP_NOM_AFFICHE 
    ,INT_IDROLE.INT_IDENT_ID INT_IDROLE_EMP_INT_IDENT_ID 
    ,INT_IDROLE.AD_ADR_ID INT_IDROLE_EMP_AD_ADR_ID 
    ,AS_PROD.REFERENCE_INT_1_PIC AS_PROD_REFERENCE_INT_1_PIC 
    ,AS_PROD.REFERENCE_INT_2_PIC AS_PROD_REFERENCE_INT_2_PIC 
    FROM SD_MVT_PRESTATION SD_MVTPRES 
    ,AS_PRODUIT AS_PROD 
    ,INT_IDENT_ROLE INT_IDROLE 
      WHERE AS_PROD.ID=SD_MVTPRES.AS_PRODUIT_ID and 
    INT_IDROLE.ID=SD_MVTPRES.INT_ROLE_EMP_ID;
     
    call     count       cpu    elapsed       disk      query    current        rows
    ------- ------  -------- ---------- ---------- ---------- ----------  ----------
    Parse        1      0.00       0.01          0          0          0           0
    Execute      1      0.00       0.00          0          0          0           0
    Fetch        1      0.03       0.14        215        218          0          25
    ------- ------  -------- ---------- ---------- ---------- ----------  ----------
    total        3      0.03       0.16        215        218          0          25
     
    Misses in library cache during parse: 1
    Optimizer goal: CHOOSE
    Parsing user id: 62  (ID_SAFJURA)
     
    Rows     Execution Plan
    -------  ---------------------------------------------------
          0  SELECT STATEMENT   GOAL: CHOOSE
          0   HASH JOIN
          0    TABLE ACCESS   GOAL: ANALYZED (FULL) OF 'INT_IDENT_ROLE'
          0    TABLE ACCESS   GOAL: ANALYZED (BY INDEX ROWID) OF 
                   'SD_MVT_PRESTATION'
          0     NESTED LOOPS
          0      TABLE ACCESS   GOAL: ANALYZED (FULL) OF 'AS_PRODUIT'
          0      INDEX (RANGE SCAN) OF 'SD_MVTPRES_AS_PROD_IDX' (NON-UNIQUE)
    Que dois-je faire afin d'accélérer sa construction.

    Merci d'avance.

  2. #2
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    Par défaut
    Les prédicats de jointure sont-ils indexés ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 69
    Points : 43
    Points
    43
    Par défaut
    Si vous parlez d'indexes sur les champs de la clause where, alors oui.

    Sinon merci de m'indiquer ce que vous entendez par les prédicats de jointure.

  4. #4
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    Par défaut
    Oui c'est ça c'est les prédicats de jointure ...

    Sinon, vous en faites quoi des 4 millions de lignes retournées ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 69
    Points : 43
    Points
    43
    Par défaut
    Elles nous permettent de générer des factures et de consulter les éléments facturés (qui, par qui, quoi, quand, ...). Par contre elles ne sont pas toutes utiles. Nous avons la même vue dans un autre cas qui contient encore plus de ligne et ce problème ne se pose pas!?

    Ce qui est étrange, ce que cette vue (ou select) fonctionnait correctement.

    Je viens d'essayer de diminuer le nombre de ligne en retour au douze dernier mois et la requête est toujours autant lente. Les premières lignes sont toujours retournée rapidement tandis que les derniers enreg. ne sont pas disponilbe après 5-10min.

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/05/2017, 22h38
  2. [2008R2] probleme de lenteur lors de l'execution des requêtes
    Par guiguipeux dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 21/02/2013, 15h31
  3. [MySQL] Tracage des requêtes lentes
    Par GyZmoO dans le forum Administration
    Réponses: 1
    Dernier message: 29/06/2010, 14h53
  4. Débit lent lors des téléchargement de torrent
    Par Hyoga dans le forum Windows XP
    Réponses: 4
    Dernier message: 23/11/2007, 14h28
  5. Réponses: 7
    Dernier message: 22/02/2005, 13h07

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