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

Oracle Discussion :

[Oracle9i] Delete très long


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 33
    Par défaut [Oracle9i] Delete très long
    Bonjour,
    Cette requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM PROJ WHERE ISCEN=1268;
    met presque 5 minutes à s'executer, sachant que la table PROJ contient au départ environ 106000 enregistrements, et que cette requête en supprime 1000. Le champ ISCEN n'entre pas dans la définition d'une clé étrangère, peut être NULL, et est indexé.
    La table PROJ contient une trentaine de champs, de type NUMBER, VARCHAR2, DATE ou CHAR.

    Les requêtes passées avant l'appel de celle-ci s'effectuent toutes dans des temps normaux, et si je fais un UPDATE de cette table avec la même clause, il s'effectue en à peine une seconde.

    Auriez vous une idée de la provenance de cette lenteur ?

    Merci d'avance.

  2. #2
    Membre émérite Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Par défaut
    est-ce que cette table (et pas juste le champ) est référencée par d'autres clef étrangère avec des "delete cascade" ?
    auquel cas les suppression vont devoir se faire en cascade pour toutes les lignes référencées par les lignes que tu supprimes de la table mère

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 33
    Par défaut
    Oui, elle est elle-même référencée, mais justement, les requêtes précédant ce DELETE portent justement sur la suppression des enregistrements des autres tables où elle est référencée dans les clés étrangères.

  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
    est-ce qu'il y a un trigger ? Tu es en AUM (UNDO) ? Quelles stats tu as dans v$sesison_wait pendant la supression ?

  5. #5
    Membre émérite Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Par défaut
    si tu n'es pas dans un environnement de prod, essaye de désactiver ces clef étrangères...

    même si tu delete les lignes filles d'abord, Oracle va peut-être quand même faire le contrôle sur les lignes restantes des tables filles.

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 487
    Par défaut
    Bonjour,

    Une autre possibilité:
    As-tu beaucoup d'indexes sur ta table ou tu fais ton delete?
    Cela peut le ralentir énormement..

  7. #7
    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
    est-ce qu'elle est partitionnée ?

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 33
    Par défaut
    Yorglaa >> Effectivement en désactivant les FK, la suppression se passe beaucoup plus rapidement, dans des temps de l'ordre de la seconde.

    Aline >> Une quinzaine d'indexes, ça fait beaucoup ?

    je vais chercher du côté des FK, si je peux faire quelque chose...

  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
    15 indexes ça commence à faire trop en effet

  10. #10
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 487
    Par défaut
    Citation Envoyé par MoitieDeCigare
    Yorglaa >> Effectivement en désactivant les FK, la suppression se passe beaucoup plus rapidement, dans des temps de l'ordre de la seconde.
    As tu indexé tes fk?
    Sinon, tu te tape des tables access full sur tes tables qui référencent ta table principale à chaque delete.

    Citation Envoyé par MoitieDeCigare

    Aline >> Une quinzaine d'indexes, ça fait beaucoup ?

    .
    oui et cela impacte surement pas mal, mais peut être que le problème principal se trouve au niveau des fk

Discussions similaires

  1. [10gR1] Delete très long (+ de 20 heures)
    Par marc85 dans le forum Administration
    Réponses: 12
    Dernier message: 23/07/2013, 19h34
  2. Changement de PK => Delete très long
    Par beubeu40 dans le forum SQL
    Réponses: 11
    Dernier message: 10/02/2010, 17h37
  3. DELETE très long sur grosse table partitionée
    Par glutock dans le forum SQL
    Réponses: 3
    Dernier message: 28/04/2008, 10h47
  4. delete très long
    Par slefevre01 dans le forum Oracle
    Réponses: 7
    Dernier message: 06/10/2005, 13h16
  5. Très long texte dans Quick Report - Comment faire ?
    Par delphi+ dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/08/2005, 22h18

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