sql >> データベース >  >> RDS >> Oracle

クエリのパフォーマンスの違いpl/sqlforallinsertとplainSQLinsert

    問題に関するいくつかの実験データ(Oracle 9.2)

    一括収集

    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
    

    挿入

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

    ダイレクトパス挿入 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の日付比較

    2. Java MYSQLプリペアドステートメントエラー:構文をチェックして「?」の近くで使用します1行目

    3. SQLServerでのOracleのCONNECTBYPRIORのシミュレーション

    4. MYSQLは年齢範囲に基づいて誕生日を選択します