2017-08-08 4 views
0

Je dois insérer les enregistrements dans une table en sélectionnant des données d'une autre table en utilisant insert dans l'instruction select. Je n'ai aucune idée sur le nombre d'enregistrements à partir de l'instruction select, cela peut être 1000, voire des millions.procédure stockée dans le développeur sql oracle pour insérer des millions d'enregistrements en utilisant insert dans une requête select?

C'est ce que j'ai requête SQL pour insérer l'enregistrement sans procédure stockée:

insert into table1 
select col1,col2,col3 from table2 where condition 
full outer join 
select col1,col2,col3 from [email protected] where condition; 

Ou est-il une autre façon de faire autour de cette tâche .. que l'utilisation de la requête ci-dessus d'environ 1,2 million d'enregistrements insérés dans 45 min. ce qui est trop long.

+0

Ayez la procédure stockée en place et laissez le serveur DB fonctionner pour vous plutôt que d'exécuter la requête dans votre outil. Et également désactiver l'index, désactiver la journalisation, etc. – Prathyush

+0

Pourquoi voulez-vous utiliser une procédure stockée - que pensez-vous que cela va améliorer? J'imagine que la requête est juste lente - une jointure externe complète sur un lien de base de données fait probablement plus de travail que prévu; Regardez les plans d'exécution de la sélection elle-même et quand cela fait partie de l'instruction d'insertion. –

+0

La requête mentionnée ci-dessus a fonctionné sans aucune procédure stockée pour le moment. S'il y a une exigence, je vais créer une nouvelle question. – vermaraj

Répondre

0

Insérer l'enregistrement de la manière ci-dessus fonctionne pour moi maintenant.