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 :

[Oracle 9.1] Plantage SQL+ à cause d'une requête


Sujet :

Oracle

  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.1] Plantage SQL+ à cause d'une requête
    Bonjour,

    La requête suivante fait planter SQL+...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    delete from RDD_DOS where SEQUENCEUR not in (select distinct DOSSIER_SEQ FROM RDD_HDO);
    Les tables accédées ont une volumétrie variant de quelques dizaines à quelques centaines de milliers de lignes...

    Comment procéder ??

    Merci, Fred

  2. #2
    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,
    Il le fait planter comment? Tu as un mesage d'erreur? Ou est ce que SQL+ ne te rend jamais la main?
    As tu créés des index sur les colonnes intérrogées par ton ordre DELETE?
    Pourquoi faire aujourd'hui ce que l'on peut faire demain ...

  3. #3
    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
    Bonjour et bienvenue dans le forum Oracle de DVP ,
    Merci de bien lire les régles avant de poster.

    Qui demande notamment de bien préciser les versions d'Oracle et les codes erreurs rencontrés. Cela permet aux personnes voulant vous répondre d'avoir touts les élèments pour le faire, et donc dd'améliorer la pertinence de leur intervention.

    Jaouad

  4. #4
    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, je n'ai pas indiqué de code erreur car Oracle ne rend jamais la main tout simplement... Quant à la version, elle est indiquée dans le sujet sauf erreur de ma part !

    Je n'ai pas créé d'index, je vais le faire de ce pas, merci pour cet excellent conseil .

  5. #5
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    supprime le DISTINCT du NOT IN et remplace par un NOT EXISTS éventuellement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    delete from RDD_DOS where NOT EXISTS (
          SELECT 1 FROM RDD_HDO
          WHERE SEQUENCEUR= DOSSIER_SEQ );
    Si ça ne suffit pas, vérifie que tu as bien un index sur RDD_DOS.SEQUENCEUR

    Pour info, le DISTINCT génére du tri qui peut s'avérer bien plus couteux que parcourir tous les doublons

  6. #6
    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
    Merci pour ce nouveau conseil car effectivement, la création de l'index ne prévient pas le plantage de SQL+...

    Par contre, je ne comprends pas le '1' du select de la clause not exists. Pourrais-tu m'expliquer s'il te plait ?

    Fred

  7. #7
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    le 1 sert juste à sélectionner quelque chose, ça pourrait être NULL, 'TOTO' ou une colonne de la table, ça n'a aucune importance

    En effet, ici il est question surtout de voir s'il existe ou non une ligne, peu importe le contenu

  8. #8
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Es-tu le seul à accéder à cette table ? Si non n'y aurait-il pas un lock sur un des enregistrements que tu veux supprimer ?
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  9. #9
    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
    Merci c'est tout bon !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Page blanche à cause d'une requête SQL
    Par sinifer dans le forum Langage
    Réponses: 8
    Dernier message: 27/08/2009, 09h48
  2. [Oracle] Ordre d'affichage de lignes d'une requête
    Par duboisfa dans le forum Langage SQL
    Réponses: 14
    Dernier message: 27/02/2006, 19h05
  3. SQL: Conception d'une requête
    Par claralavraie dans le forum Langage SQL
    Réponses: 3
    Dernier message: 24/01/2006, 16h57
  4. [SQL ] performances dans une requête
    Par claralavraie dans le forum Oracle
    Réponses: 12
    Dernier message: 05/01/2006, 17h54
  5. Récupérer le code SQL à partir d'une requête
    Par Edith_T dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 23/11/2004, 14h10

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