Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Cara tercepat untuk menyisipkan sejuta baris di Oracle

Pendekatan Anda akan menyebabkan masalah memori. Cara tercepat adalah ini [Permintaan diedit setelah komentar David untuk menangani skenario nol] :

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 

Penyisipan pilih adalah pendekatan tercepat karena semuanya tetap di RAM. Permintaan ini bisa menjadi lambat jika masuk ke area temp Global tetapi kemudian itu membutuhkan penyetelan DB. Saya rasa tidak ada yang lebih cepat dari ini.

Beberapa detail lebih lanjut tentang penggunaan memori oleh Query:

Setiap kueri akan memiliki PGA [Program global area] sendiri yang pada dasarnya adalah RAM yang tersedia untuk setiap kueri. Jika area ini tidak cukup untuk mengembalikan hasil kueri maka mesin SQL mulai menggunakan tablespace temp Golabl yang seperti hard disk dan kueri mulai menjadi lambat. Jika data yang dibutuhkan oleh kueri sangat besar sehingga bahkan area temp tidak mencukupi maka Anda akan mengalami kesalahan tablespace.

Jadi selalu rancang kueri agar tetap berada di PGA jika tidak, itu adalah bendera Merah.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Koneksi Laravel dan Oracle

  2. Praktik terbaik untuk menyimpan kata sandi di skrip shell / Perl?

  3. Mengakses elemen ke-2 di kolom varray

  4. Pengecualian Penerapan Weblogic:PaddingException:Tidak dapat melakukan unpadding:byte pad tidak valid

  5. ekspresi reguler penghapusan karakter khusus