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 :

[11g] Performance Update avec select au niveau du set


Sujet :

SQL Oracle

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juin 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 11
    Par défaut [11g] Performance Update avec select au niveau du set
    Bonjour,

    j'ai un gros problème de performance au niveau d'une de mes requêtes update qui comprend un select à l'interieur du set, au niveau du cout de la requête c une catastrophe mais je ne sais pas comment faire autrement...

    voici la requête :

    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
    UPDATE m2oPointComptage pds
    SET m2oDateRaccorde =
      ( SELECT DISTINCT first_value(e.m2oDateDerRx) over (partition BY pds.sysId order by e.sysUpdTime)
      FROM m2oCompteur cpt,
        m2oEquipement eq,
        m2oHrNbRecepCr e
      WHERE e.m2oTraite        = 'N'
      AND e.m2oIdEquipement    = eq.m2oAdresseRadio
      AND e.m2oTypeDeTrame     = '3'
      AND eq.sysClass          = 'm2oModule'
      AND eq.m2oTechno         = 'HR'
      AND cpt.sysId            = eq.m2ocompteur_id
      AND pds.sysId            = cpt.m2opointcomptage_id
      AND e.m2oDateDerRx      IS NOT NULL
      AND pds.m2oDateRaccorde IS NULL
      )
    WHERE pds.m2oDateRaccorde IS NULL
    AND EXISTS
      (SELECT 1
      FROM m2oCompteur cpt,
        m2oEquipement eq,
        m2oHrNbRecepCr e
      WHERE e.m2oTraite     = 'N'
      AND e.m2oIdEquipement = eq.m2oAdresseRadio
      AND e.m2oTypeDeTrame  = '3'
      AND eq.sysClass       = 'm2oModule'
      AND eq.m2oTechno      = 'HR'
      AND cpt.sysId         = eq.m2ocompteur_id
      AND pds.sysId         = cpt.m2opointcomptage_id
      AND e.m2oDateDerRx   IS NOT NULL
      )
    j'ai ajouté cette requête sql et le plan d'exécution fourni par sql developper en pièces jointes.

    Pour info les champs sysid sont les clefs primaires de mes tables.
    J'ai essayé de créer tous les index possibles mais je pense que je suis arrivé au bout de cette possibilité... :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE INDEX m2ohrnbrecepcr_i1 ON M2OHRNBRECEPCR(M2OTRAITE, M2OIDCR, M2OIDEQUIPEMENT) TABLESPACE INDX;
    CREATE INDEX m2oequipement_i1 ON M2OEQUIPEMENT(M2OADRESSERADIO, M2OTECHNO, SYSCLASS) TABLESPACE INDX;
    CREATE INDEX m2ohrnbrecepcr_i1 ON M2OHRNBRECEPCR(M2OIDEQUIPEMENT, M2OIDCR, M2OTRAITE) TABLESPACE INDX;
    CREATE INDEX CI4B2EE1C72FE0CBDA ON M2OCOMPTEUR(M2OPOINTCOMPTAGE_ID)
    Que faut-il que je fasse ? il doit bien avoir un autre moyen d'écrire cette requête update...
    Ou est-ce qu'il faut que passe en pl/sql avec un curseur ?

    please help !
    merci d'avance,
    Renaud
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Requête update avec select imrbiqué
    Par Woufeigh dans le forum Requêtes
    Réponses: 1
    Dernier message: 05/05/2008, 00h43
  2. Requête Update avec Select.
    Par franzarelli dans le forum Langage SQL
    Réponses: 1
    Dernier message: 25/03/2008, 05h33
  3. Update avec Select : je n'y arrive pas.
    Par marye77 dans le forum Langage SQL
    Réponses: 15
    Dernier message: 22/02/2008, 16h51
  4. UPDATE avec SELECT sur la même table
    Par Invité dans le forum Langage SQL
    Réponses: 7
    Dernier message: 07/12/2007, 03h39
  5. Requete Update avec Select imbriqué: etrange resultat!
    Par corentone dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/08/2007, 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