Oracle
 sql >> база данни >  >> RDS >> Oracle

Най-бързият начин за вмъкване на милион реда в Oracle

Вашият подход ще доведе до проблеми с паметта. Най-бързият начин ще бъде този [Запитването е редактирано след коментара на Дейвид, за да се погрижи за нулевия сценарий] :

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 

Изборът на вмъкване е най-бързият подход, тъй като всичко остава в RAM. Тази заявка може да стане бавна, ако влезе в глобалната температурна област, но тогава това се нуждае от настройка на DB. Не мисля, че може да има нещо по-бързо от това.

Малко повече подробности за използването на паметта от Query:

Всяка заявка ще има своя собствена PGA [Програмна глобална област], която основно е RAM, достъпна за всяка заявка. Ако тази област не е достатъчна за връщане на резултати от заявка, тогава SQL машината започва да използва Golabl temp таблично пространство, което е като твърд диск и заявката започва да става бавна. Ако данните, необходими за заявката, са толкова огромни, че дори временната област не е достатъчна, ще получите грешка в табличното пространство.

Така че винаги проектирайте заявката така, че да остане в PGA, в противен случай това е червен флаг.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Как да изберете най-новия елемент от датата

  2. ODP.NET изходен низов параметър не връща стойност

  3. PHP oci_connect() TNS:не може да разреши идентификатора за свързване (ORA-12154)

  4. Функция DATEDIFF в Oracle

  5. Кумулативна разлика