sql >> Databáze >  >> RDS >> Oracle

Rozdíl ve výkonu dotazu pl/sql pro všechny insert a plain SQL insert

Některá experimentální data pro váš problém (Oracle 9.2)

hromadné shromažďování

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

vložit

-- 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

přímé vložení cesty 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. MySQL:jak provést zabezpečení na úrovni řádků (jako je virtuální privátní databáze Oracle)?

  2. plpgsql CREATE FUNCTION chyba syntaxe na nebo blízko 'CREATE'

  3. SQLPlus varchar2 vypíše bílé znaky

  4. Java – Jak volat proceduru Oracle s vlastními typy?