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 :

Optimisation de la commande INSERT


Sujet :

PL/SQL Oracle

  1. #21
    Membre régulier
    Homme Profil pro
    Expert Oracle
    Inscrit en
    Mai 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Expert Oracle

    Informations forums :
    Inscription : Mai 2009
    Messages : 92
    Points : 70
    Points
    70
    Par défaut
    Citation Envoyé par mnitu Voir le message
    Qu’est-ce qu'il vous fait croire ça ? Le plan d'exécution ne montre guerre de trace d'un pareil comportement.
    J'ai fait la remarque car la requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    INSERT 
      when statut = 'COUR' then
      INTO T_COURANT (nm, statut) VALUES (nm, statut)
      when statut = 'HIST' then
      INTO T_HISTORIQUE (nm, statut) VALUES (nm, statut)  
    SELECT * FROM TABLE_SOURCE;
    a mis autant de temps pour insérer les lignes que celle-ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    INSERT 
      INTO T_COURANT (nm, statut)
      SELECT * FROM TABLE_SOURCE WHERE statut = 'COUR';
     
     
    INSERT 
      INTO T_HISTORIQUE (nm, statut)
      SELECT * FROM TABLE_SOURCE WHERE statut = 'HIST';
    sachant que la deuxième requête fera 2 lectures de la table TABLE_SOURCE au lieu d'une dans la première requête.

  2. #22
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 394
    Points
    18 394
    Par défaut
    Avez-vous essayé en direct load (append) ?

  3. #23
    Membre régulier
    Homme Profil pro
    Expert Oracle
    Inscrit en
    Mai 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Expert Oracle

    Informations forums :
    Inscription : Mai 2009
    Messages : 92
    Points : 70
    Points
    70
    Par défaut
    Non je n'ai pas fait de Append, j'ai juste utilisé le Parallel Run:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    INSERT /*+ PARALLEL(c, 10) */
      when statut = 'COUR' then
      INTO T_COURANT (nm, statut) VALUES (nm, statut)
      when statut = 'HIST' then
      INTO T_HISTORIQUE (nm, statut) VALUES (nm, statut)  
    SELECT * FROM TABLE_SOURCE;
    Peut-on associer un Parallel Run avec un Append ?

  4. #24
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 394
    Points
    18 394
    Par défaut
    Oui je pense, mais il y a des contraintes pour le APPEND :
    http://download.oracle.com/docs/cd/E...ments_9014.htm

    Voir le premier gros paragraphe Conventional and Direct-Path INSERT.

  5. #25
    Membre régulier
    Homme Profil pro
    Expert Oracle
    Inscrit en
    Mai 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Expert Oracle

    Informations forums :
    Inscription : Mai 2009
    Messages : 92
    Points : 70
    Points
    70
    Par défaut
    Je viens de jeter un coup d'œil sur cette article, apparemment pas besoin de APPEND quand il s'agit d'un INSERT avec le hint PARALLEL, vu que le APPEND est utilisé par défaut dans ce dernier cas.

    (voir le paragraphe Oracle append hint and parallel DML)

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. syntaxe commande INSERT INTO
    Par hottnikks_79 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/11/2006, 13h52
  2. Réponses: 3
    Dernier message: 25/10/2006, 17h45
  3. la commande insert into et le type serial
    Par nael_n dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 28/08/2006, 11h16
  4. form6i la commande insert->?
    Par seif_eddine dans le forum Forms
    Réponses: 5
    Dernier message: 07/06/2006, 00h03
  5. Delphi - Mysql 5.0 et commande insert
    Par zorville dans le forum Requêtes
    Réponses: 4
    Dernier message: 23/04/2006, 17h59

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