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 :

[Oracle 9.i] Requête qui passe pas


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Inscrit en
    Juin 2003
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 156
    Points : 85
    Points
    85
    Par défaut [Oracle 9.i] Requête qui passe pas
    Bonjour,

    De retour parmi vous pour vous exposer une nouvelle contrariété.

    Le requête...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DELETE FROM RDD_DEM A WHERE NOT EXISTS (SELECT 1 FROM RDD_HDE B WHERE A.NO_DEM_SEQ = B.DEM_SEQ)
    ...rend silencieux mon SQL+ qui ne répond plus jusqu'à ce que je l'arrête violemment depuis le gestionnaire de tâches. Délai > 1 heure une fois avant que je ne me décide à interrompre.

    Les tables dont quelques centaines de milliers de lignes.

    Votre aide serait précieuse, merci d'avance.

    Frédéric[/quote]

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    Quelle est le plan d'éxècution ?
    Est ce qu'il n'y aurait pas un verrou sur ta base ?

  3. #3
    Membre régulier
    Inscrit en
    Juin 2003
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 156
    Points : 85
    Points
    85
    Par défaut
    Cette requête est intégrée dans un script PL/SQL, je ne sais pas répondre à la question sur le plan d'exécution. Comment savoir ?

    Sinon pas de verrou, je ne pense pas, car d'autres requêtes se déroulent normalement.

  4. #4
    Membre habitué Avatar de VinceTlse
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 163
    Points : 191
    Points
    191
    Par défaut
    Bonjour,
    As tu testé la requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT 1 FROM RDD_HDE B WHERE A.NO_DEM_SEQ = B.DEM_SEQ
    Combien de lignes te ramene t elle?
    En combien de temps?
    Pourquoi faire aujourd'hui ce que l'on peut faire demain ...

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 80
    Points : 83
    Points
    83
    Par défaut
    Bonjour.

    Tes alias n'ont pas l'air utiles, sinon la requête peut être modifiée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DELETE FROM RDD_DEM WHERE NO_DEM_SEQ NOT IN (SELECT DEM_SEQ FROM RDD_HDE)
    Mais je ne sais pas dire si elle est meilleure en exécution.

    @+

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Citation Envoyé par BalBalNet
    Bonjour.

    Tes alias n'ont pas l'air utiles, sinon la requête peut être modifiée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DELETE FROM RDD_DEM WHERE NO_DEM_SEQ NOT IN (SELECT DEM_SEQ FROM RDD_HDE)
    Mais je ne sais pas dire si elle est meilleure en exécution.

    @+
    Ce n'est pas que les alias ne sont pas utiles, ils sont carrément proscrits de la norme SQL => je le sais parce que l'on m'a fait la même remarque sur le forum du langage SQL donc la syntaxe avec des alias est à proscrire définitivement.
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  7. #7
    Membre régulier
    Inscrit en
    Juin 2003
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 156
    Points : 85
    Points
    85
    Par défaut
    En fait, avec la clause IN, c'est encore pire dans le sens où même avec des volumes plus petits, ça ne passe pas. Avec la clause EXISTS, ça passe sur des volumes plus réduits...

  8. #8
    Membre habitué Avatar de VinceTlse
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 163
    Points : 191
    Points
    191
    Par défaut
    As-tu mis des index?
    Si oui, peut etre qu'en désactiver certains n'ayant pas d'influence dans la requete peut faire gagner du temps.
    Ayant des tables possedant des index geographiques, les desactiver peut me faire gagner la moitié du temps !
    Pourquoi faire aujourd'hui ce que l'on peut faire demain ...

Discussions similaires

  1. Requête qui passe dans phpmyadmin mais pas en direct
    Par guidav dans le forum Requêtes
    Réponses: 2
    Dernier message: 13/02/2008, 15h00
  2. Key Listener qui passe pas
    Par FCDB dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 09/04/2007, 21h31
  3. [hibernate] Ma sous-requête ne passe pas
    Par n@n¤u dans le forum Hibernate
    Réponses: 11
    Dernier message: 11/07/2006, 10h07
  4. domxml caractère qui passe pas
    Par gabychon dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 19/05/2006, 14h08
  5. [MySQL] un echo qui passe pas ^^
    Par Le Mage Noir dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 09/02/2006, 15h05

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