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 :

Mise à jour des tables


Sujet :

PL/SQL Oracle

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 083
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 083
    Points : 271
    Points
    271
    Par défaut Mise à jour des tables
    Bonjour,
    j'ai deux tables : A et B. La table B est alimentée par la table A. Chaque jour je mets les données de la table A dans la table B. J'aurai deux possibilités :
    1-comparer A et B et ajouter la différence de A par rapport à B dans B.
    2-vider B et le remplire completement avec le contenu de A.

    Lequel est plus rapide ?
    Actuellement je n'ai pas beaucoup de données dans A donc mes tests ne sont pas significatifs. Mes en prod j'aurai des milliers de lignes que je ne peux pas créer actuellement.

    D'avance merci.

  2. #2
    Scorpi0
    Invité(e)
    Par défaut
    Ça dépend de beaucoup de chose, le merge d'Oracle est assez sympathique pour faire ça, mais une combo truncate/insert en masse est assez efficace aussi.

    La question c'est : as-tu (ou va tu avoir) des triggers, comment détectes-tu si deux enregistrements sont les mêmes (sur combien de colonnes fais-tu le test), vider la table aura-t-elle une influence sur les reste de la base (clé étrangère ?), etc...

    Au final, si ce n'est que quelques milliers de lignes, tes traitements ne seront jamais bien long dans les deux cas.

  3. #3
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 306
    Points
    5 306
    Par défaut
    et pourquoi pas des triggers sur les insert, update et delete ?

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 45
    Points : 38
    Points
    38
    Par défaut
    Truncate B reuse storage ;
    insert /*+ append */ into B (select * from A);

    Me semble imbatable du point de vue Perf. Je vois pas comment on pourrait faire plus vite. Un CTAS de B a partir de A paierait le cout des allocations des extends.

    Evidemment si tu a 3 rows en plus par jour dans A et A a 50M rows...

Discussions similaires

  1. Mise à jour des tables dans Access
    Par Zabou dans le forum VBA Access
    Réponses: 2
    Dernier message: 16/05/2008, 10h22
  2. problème de mise à jour des tables (10g)
    Par bad lieutenant dans le forum Administration
    Réponses: 7
    Dernier message: 26/04/2007, 17h21
  3. Réponses: 2
    Dernier message: 24/02/2007, 20h14
  4. Programmer la mise à jour des tables attachées
    Par _developpeur_ dans le forum Access
    Réponses: 3
    Dernier message: 02/12/2005, 20h29
  5. Mise à jour des tables liées + TIMESTAMP
    Par Homegrown dans le forum Access
    Réponses: 11
    Dernier message: 25/04/2005, 21h52

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