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

PL/SQL Oracle Discussion :

Problème d'update sur une table


Sujet :

PL/SQL Oracle

  1. #1
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 319
    Points : 80
    Points
    80
    Par défaut Problème d'update sur une table
    Salut,

    Je suis sous oracle 10,
    je dois alimenter une table Target T à partir d'une table source S.
    Ma table target T contient actuellement
    26 452 142 lignes.

    La table source, contient des lignes existantes dans la target T
    mais aussi des nouvelles lignes.

    Donc afin de savoir si je dois faire un insert ou update,
    je compte faire une jointure externe entre la table S et la table T.
    Si la clé existe dans S et non dans T c'est un insert sinon Update.

    Par contre, les update,appramment c'est très long,
    je peu avoir à mettre à jour 20 lignes comme 100 000 de lignes.
    Pourquoi est-ce aussi long ?pourrait t on m expliquer ?
    et comment peut-on optimiser cela ?

    Merci à tous

  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
    Utilisez Merge.

  3. #3
    Membre chevronné
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Points : 1 878
    Points
    1 878
    Par défaut
    Le merge fonctionnant en ROW BY ROW, ce n'est pas la plus efficace

    Un INSERT et un UPDATE "ciblés" devraient faire l'affaire

    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
     
    INSERT INTO ma_table
      (Champs1, champs2,..)
      (SELECT Ch1, ch2
      FROM ma_table2
      WHERE NOT EXISTS
         (SELECT 1 
         FROM ChPK = ChampsPK)
       );
     
    UPDATE ma_table
    SET  (Champs1, Champs2...) = 
        (SELECT Ch1, Ch2...
         FROM ma_table2
         WHERE ChPK = ChampsPK)
    WHERE EXISTS
       (SELECT 1 
       FROM ChPK = ChampsPK)

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Citation Envoyé par Scriuiw Voir le message
    Le merge fonctionnant en ROW BY ROW
    Non, MERGE est ensembliste.

  5. #5
    Membre chevronné
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Points : 1 878
    Points
    1 878
    Par défaut
    On m'aurait menti !

Discussions similaires

  1. [AC-2010] Problème lors d'un "UPDATE" sur une table
    Par Walric dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 09/04/2012, 20h33
  2. UPDATE sur une table (mot réservé)
    Par calp25 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 20/04/2008, 22h33
  3. Probléme de concurrence sur une table
    Par D_light dans le forum Administration
    Réponses: 2
    Dernier message: 03/03/2008, 13h14
  4. Problème d'update d'une table sql en vb6
    Par cfelicien dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 30/08/2007, 20h24
  5. Problème de pointeur sur une table de hashage
    Par nicdesf dans le forum Langage
    Réponses: 3
    Dernier message: 07/09/2006, 19h23

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