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

Oracle Discussion :

[Optimisation] Insert Select


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    fab
    fab est déconnecté
    Membre averti
    Inscrit en
    Juillet 2003
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 44
    Par défaut [Optimisation] Insert Select
    Bonjour,

    J'ai déjà posté dans le forum SQL mais je n'ai pas eu de réponse claire. Le problème vient peut être de ma base.

    J'ai une requete select assez importante. Je l'optimise et finit par avoir mes 1748 lignes en quelques secondes. Parfait.

    Je veux insérer ce résultat dans une autre table avec un INSERT INTO () VALUES (SELECT...)

    J'ai bien suivi les instructions d'optimisation préconisé : type de colonne identique et nommage des colonnes dans la 1ere partie du INSERT.

    Malgré cela le temps d'insert est vraiment très long : plusieurs dizaines de minutes !

    Pour info j'utilise des DB LINK.

    Quel peut-être le problème ?

    Merci

  2. #2
    Membre chevronné Avatar de chrifo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 444
    Par défaut
    Bonjour,
    Vous faites peut-être le select sur l'instance distance (via /*+ DRIVING_SITE=<table> */ par exemple).
    Lorsque vous passez en insert, Oracle exécute le select depuis l'instance locale, ce qui le plombe complètement. Je crois que ce pb est un bug référencé ...

  3. #3
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    il ne faut pas utiliser VALUES si c'est par SELECT

    Tu peux passer les indexes à USUSABLE et les rebuilder en fin d'insert, désactiver les contraintes et les triggers et utiliser le hint APPEND... tu peux aussi passer la table en NOLOGGING le temps de l'insert.

  4. #4
    fab
    fab est déconnecté
    Membre averti
    Inscrit en
    Juillet 2003
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 44
    Par défaut
    Merci pour vos réponses.

    Je ne met pas le VALUES, c'était pour expliquer le principe, désolé.

    J'ai déjà lu pas mal de questions et papiers sur le sujet, j'ai bien essayé de désactiver les index, mettre le /*+ APPEND */, etc.. mais sans succès.

    Pour le bug, l'explication me semble bien correspondre au problème. Je n'ai rien trouvé sur metalink d'oracle. J'ai peut-être mal cherché.
    Avez vous plus d'info à me de donner ?

    Merci encore

  5. #5
    Membre chevronné Avatar de chrifo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 444

  6. #6
    fab
    fab est déconnecté
    Membre averti
    Inscrit en
    Juillet 2003
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 44
    Par défaut
    Ok, . Il n'y a apparemment pas de solution, Oracle ne semble pas vouloir traiter ce bug.

    Tanpis, je contourne en passant par une procédure stockée, For (select...) loop insert... end loop;

    C'est moins élégant mais cela marche rapidement.

  7. #7
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    pense au bulk collect dans ce cas

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

Discussions similaires

  1. [INSERT][SELECT] insert avec un select imbriqué
    Par narmataru dans le forum SQL
    Réponses: 11
    Dernier message: 06/03/2013, 03h04
  2. Optimisation insert select
    Par fab dans le forum Langage SQL
    Réponses: 3
    Dernier message: 20/07/2006, 17h13
  3. INSERT + SELECT TOP...argument incorrect
    Par samlepiratepaddy dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 12/09/2005, 01h10
  4. [insert][select] Subqueries not allowed
    Par Invité dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/09/2005, 11h56
  5. insert-select sur 2 base différente
    Par gskoala dans le forum Paradox
    Réponses: 2
    Dernier message: 16/11/2004, 15h11

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