Oracle
 sql >> Base de données >  >> RDS >> Oracle

Le moyen le plus rapide d'insérer un million de lignes dans Oracle

Votre approche entraînera des problèmes de mémoire. Le moyen le plus rapide sera celui-ci [Requête modifiée après le commentaire de David pour s'occuper du scénario nul] :

insert into dtr_debtors1(SSN)
select a.S1+level
   from dual,(select nvl(max(ssn),0) S1 from dtr_debtors1) a
connect by level <= 10000 

Une insertion de sélection est l'approche la plus rapide car tout reste dans la RAM. Cette requête peut devenir lente si elle se glisse dans la zone de température globale, mais cela nécessite un réglage de la base de données. Je ne pense pas qu'il puisse y avoir quelque chose de plus rapide que cela.

Quelques détails supplémentaires sur l'utilisation de la mémoire par Query :

Chaque requête aura sa propre PGA [zone globale du programme] qui est essentiellement la RAM disponible pour chaque requête. Si cette zone n'est pas suffisante pour renvoyer les résultats de la requête, le moteur SQL commence à utiliser l'espace de table temporaire Golabl qui est comme le disque dur et la requête commence à devenir lente. Si les données nécessaires à la requête sont si volumineuses que même la zone temporaire n'est pas suffisante, vous obtiendrez une erreur d'espace de table.

Donc, concevez toujours la requête de manière à ce qu'elle reste dans PGA, sinon c'est un drapeau rouge.