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 :

[Article] Mise à jour de données entre deux tables sous Oracle


Sujet :

SQL Oracle

  1. #1
    Membre averti

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 29
    Points : 363
    Points
    363
    Billets dans le blog
    1
    Par défaut [Article] Mise à jour de données entre deux tables sous Oracle
    Bonjour,

    un petit article traitant de la Mise à jour de données entre deux tables sous Oracle.

    Etude sous l'angle des performances.

    Lire l'article

    Bonne lecture,
    Laurent

  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
    Pour ceux qui s’intéressent au problème, un complément d'information : 8 Bulk Update Methods Compared

  3. #3
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut,

    Juste une remarque par rapport au chapitre 4.

    Si je ne me trompe, les cas où l'update de vue ne passe pas sont exactement ceux où il n'y a pas de contrainte d'unicité sur la jointure :


    Sur la doc Oracle c'est un peu flou :
    The key-preserving property of a table does not depend on the actual data in the table. It is, rather, a property of its schema. For example, if in the emp table there was at most one employee in each department, then deptno would be unique in the result of a join of emp and dept, but dept would still not be a key-preserved table.
    Par contre, l'Oncle Tom est un peu plus précis sur asktom (j'avais également fait un petit article dans le temps sur l'utilisation du MERGE dans ce cas, et Mnitu m'avait fait revoir ma copie sur l'update de vue ) :

    http://asktom.oracle.com/pls/asktom/...D:273215737113

    You NEED a primary key/unique constraint on
    object_id in T1 to ensure that each row in T joins to AT MOST 1 row in T1.
    EDIT :
    Il me semble qu'étiquement on ne peut pas poster de lien vers son propre blog pourri, n'hésitez pas à me modérer

    http://pacmann.over-blog.com/article...-40373367.html

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

  4. #4
    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
    Citation Envoyé par pacmann Voir le message
    ...Sur la doc Oracle c'est un peu flou :
    ...
    Comme d'habitude avec Oracle le même sujet est traité dans plusieurs endroits:
    Updatable Join Views

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2006
    Messages : 139
    Points : 152
    Points
    152
    Par défaut Question sur le test
    Bonjour,

    Pour information, avez vous vidé la shared pool avant de tirer chaque requête?
    Les blocks étant en mémoire certaines requêtes peuvent être plus rapides.

    Merci

  6. #6
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Citation Envoyé par mnitu Voir le message
    Comme d'habitude avec Oracle le même sujet est traité dans plusieurs endroits:
    Updatable Join Views
    Enfin je trouve que ça reste dans le même esprit... ils parlent de PK dans les "for example"... je trouve ça assez insupportable cette esquive constante d'énoncer une règle propre et précise.

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

  7. #7
    Membre averti

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 29
    Points : 363
    Points
    363
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Citation Envoyé par kervoaz Voir le message
    Bonjour,

    Pour information, avez vous vide la shared pool avant de tirer chaque requête?
    Les blocks etant memoire certaines requetes peuvent etre plus rapides.

    Merci
    Non, je ne vide pas la shared pool avant, sauf si je le dis explicitement.
    En effet les performances ne sont pas les mêmes que si le pools étaient vidés avant, mais normalement, ca ne doit pas remettre fondamentalement en cause les performances relatives entre les solutions.
    Le fait de vider les shared pools reflète plus certaines conditions de production, mais d'autre conditions de production arrivent à garder une bonne partie des données dans les shared pools.
    Du coup la performances du sous système disque sera plus décisive.

    Comme je dis souvent en terme de performances, ca dépend de beaucoup de choses, et rien ne vaut des tests dans l'environnement réel d’exécution de l'application avec les vrais données qui pour un tas de raisons peuvent parfois démentir les plus belles théories.

    Cependant, heureusement, dans pas mal de contextes la théorie reste vrai.

Discussions similaires

  1. exporter les données entre deux tables différentes ?
    Par tizilfin dans le forum Oracle
    Réponses: 3
    Dernier message: 12/03/2007, 16h39
  2. Transferer a la volée des données entre deux tables
    Par schwinny dans le forum Access
    Réponses: 2
    Dernier message: 13/07/2006, 09h50
  3. transfert de données entre deux tables
    Par student007 dans le forum Access
    Réponses: 4
    Dernier message: 23/12/2005, 14h04
  4. Réponses: 2
    Dernier message: 21/10/2005, 18h02

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