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

Perbedaan kinerja kueri pl/sql untuk semua sisipan dan sisipan SQL biasa

Beberapa data eksperimental untuk masalah Anda (Oracle 9.2)

pengumpulan massal

DECLARE 
  TYPE t_number_table IS TABLE OF NUMBER;
  v_tab t_number_table;
BEGIN
  SELECT ROWNUM
  BULK COLLECT INTO v_tab
  FROM dual
  CONNECT BY LEVEL < 100000;

  FORALL i IN 1..v_tab.COUNT
    INSERT INTO test VALUES (v_tab(i));
END;
/
-- 2.6 sec

masukkan

-- test table 
CREATE global TEMPORARY TABLE test (id number)
ON COMMIT preserve ROWS;

BEGIN
  INSERT INTO test
  SELECT ROWNUM FROM dual
  CONNECT BY LEVEL < 100000;
END;
/
-- 1.4 sec

sisipan jalur langsung http://download.Oracle.com/docs /cd/B10500_01/server.920/a96524/c21dlins.htm

BEGIN
  INSERT /*+ append */ INTO test
  SELECT ROWNUM FROM dual
  CONNECT BY LEVEL < 100000;
END;
/
-- 1.2 sec


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengapa Oracle 9i memperlakukan string kosong sebagai NULL?

  2. skrip yang menarik data dari file txt di klausa where

  3. Ubah setiap karakter dalam string menjadi baris

  4. Menghapus catatan dari satu tabel bergabung ke tabel lain SQL

  5. Buat pengguna dari variabel string di blok PL/SQL