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 :

Optimisation delete in


Sujet :

SQL Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 13
    Points : 7
    Points
    7
    Par défaut Optimisation delete in
    Bonjour,

    J'ai des temps de traitements lors du passage d'un pl_sql sur cette requete... J'aimerai l'optimiser car on l'a arrêté au bout de 12h de traitement alors qu'avant la modif, elle prenait quand même 1h30... c'est assez urgent, j'ai suspendu le traitement hier soir mais il doit tourner ce week end.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Delete FROM table1 b
     WHERE (cle11,cle12,cle13,cle14,cle15,cle16,cle17)
        in (select cle21, cle22, 'G', cle24, cle25, cle26, 0
              FROM table2 p
             WHERE p.cle11       = b.cle21 
               AND p.cle12       = b.cle22
               AND p.cle14       = b.cle24 
               AND p.champsdate >= trunc(sysdate-8,'DD')
               AND p.cle15       = 1);
    Je pense que c'est le "in" qu'il n'aime pas et je suis sur une partie de la clef de table2, lorsque j'étais sur une clef supplementaire dans mon select, les temps de reponse était longs mais 1h30 au lieu de 12h.

    MERCI d'avance pour votre aide...

  2. #2
    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
    Volumétrie ? Présences des indexes ? Version Oracle ? Statistiques à jour ?
    Comme ça au pif si vous avez un bon index réécrivez votre delete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Delete table1 a
      Where Exists (Select null 
                            from table2 b
                          Where a.cle1 = b.cle1
                              And a.cle2 = b.cle2
                         ...
                        )

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Effectivement

    Les index et les stat sont à jour.

    la table 1 fait 830000 lignes et la table 2 la 400000 lignes...

    Merci pour votre aide, je teste ca.

  4. #4
    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
    Une 1h30 pour supprimer au pire 800000 enregistrements c'est énorme. Avez achetez l’option Oracle Very Slow Database ?

  5. #5
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    536
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 536
    Points : 1 359
    Points
    1 359
    Par défaut
    Citation Envoyé par nicotine Voir le message
    Effectivement

    Les index et les stat sont à jour.

    la table 1 fait 830000 lignes et la table 2 la 400000 lignes...

    Merci pour votre aide, je teste ca.
    Bonjour,

    Y a t-il des triggers sur cette table?
    Existe t-il des tables filles (child tables) pour la table 1
    Effectivement, de nos jours c'est un volume très petit que vous voulez supprimer.

    Essayez ceci pour avoir une idée de ce que fait le CBO
    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
     
    mhouri> explain plan for delete from emp where empno = 7839;
     
    Explained.
     
    mhouri> select * from table(dbms_xplan.display);
     
    PLAN_TABLE_OUTPUT                                                                                   
    ----------------------------------------------------------------------------------------------------
    Plan hash value: 2332860015                                                                         
     
    -----------------------------------------------------------------------------                       
    | Id  | Operation          | Name   | Rows  | Bytes | Cost (%CPU)| Time     |                       
    -----------------------------------------------------------------------------                       
    |   0 | DELETE STATEMENT   |        |     1 |    13 |     0   (0)| 00:00:01 |                       
    |   1 |  DELETE            | EMP    |       |       |            |          |                       
    |*  2 |   INDEX UNIQUE SCAN| EMP_PK |     1 |    13 |     0   (0)| 00:00:01 |                       
    --------------------------------------------------------------------------                      
     
    Predicate Information (identified by operation id):                                                 
     
    ---------------------------------------------------                                                
     
       2 - access("EMPNO"=7839)                                                                         
     
    14 rows selected.
    Mohamed Houri

  6. #6
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Merci pour vos réponses et votre aide.

    Mon cas est particulier et j'ai réussi à m'en sortir en faisant un gros delete sur une partie de la clef et le meme delete qu'avant qui supprime beaucoup moins de données donc très rapide...

    Concernant l'option, je ne sais pas répondre, c'est pour ma boite et c'est le DBA qui gére tout ca...

    Un grand merci à vous... Le traitement passe cette nuit, croisez les doigts et merci beaucoup...

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mai 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2009
    Messages : 35
    Points : 32
    Points
    32
    Par défaut
    pour la lenteur dans la suppression la table 1
    est ce que il existe une autre table ou la cle primaire de la table 1 est une cle étrangère si c'est le cas et si cette deuxième table est volumineuse à chaque suppression il vérifiera l’existence de cette clé.
    donc si t'es sure que tt les clé sont supprimé de la table 2 désactive la clé étrangère et lance la suppression

Discussions similaires

  1. [Optimisation] Delete beaucoup plus lent que select
    Par GyZmoO dans le forum Requêtes
    Réponses: 17
    Dernier message: 18/07/2017, 19h08
  2. Optimisation DELETE
    Par poups dans le forum Oracle
    Réponses: 25
    Dernier message: 29/11/2010, 11h24
  3. optimisation delete requete
    Par ekremyilmaz dans le forum Langage SQL
    Réponses: 1
    Dernier message: 19/04/2010, 10h52
  4. Optimiser delete sur table
    Par fulub dans le forum Administration
    Réponses: 13
    Dernier message: 16/06/2009, 22h05
  5. Optimisation de DELETE
    Par RitonLaBevue dans le forum Requêtes
    Réponses: 5
    Dernier message: 02/11/2005, 15h31

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