-3

ストアド プロシージャを作成しましたが、呼び出すと時間がかかります。「SP」で一時テーブルを使用します。それは理由になることができますか??

CREATE OR REPLACE PROCEDURE TEST_SP
IS
BEGIN
INSERT INTO MYTEMP_table (A, B )
      (  SELECT  id AS CUSTOMER_NO,
              ACC_NO AS ACCOUNT_NO
           FROM  myTable );
UPDATE MYTEMP_table
      SET MYTEMP_table.A =
             (  SELECT MIN (BRH_DATE)
                  FROM CUSTOMER,)



   UPDATE MYTEMP_table
      SET MYTEMP_table.B =
             (  SELECT MIN (SUBSTR (ENTRY_DATE, 0, 8))
                  FROM INFO)
                .......

MYTEMP_table は一時テーブルです。

4

1 に答える 1

2

このコード スニペットはひどく不完全に見えます。一時テーブルに 1 つのクエリを入力しているのは奇妙に思えます。

select id, acc_no from myTable

次に、すべての列を単一の値で消去します。

UPDATE MYTEMP_table
SET MYTEMP_table.A =
       (  SELECT MIN (BRH_DATE)
            FROM CUSTOMER,)

あなたの投稿は明確ではありませんが、一時的なストレージ用の物理テーブルではなく、グローバル一時テーブル (メモリ ベース) を使用していることを願っています。

同じ行への複数の書き込みは、作業を遅くする確実な方法です (物理テーブルではさらに遅くなりますが、いずれにしても遅くなります)。可能であれば、次のことを考慮してください。

  1. 分析関数またはより複雑な初期クエリを使用して、すべての書き込みを前もって完了させます...
  2. Explain Plan の実行/読み取りに慣れていない/慣れていない場合は、SQL エディターで各 SQL ステートメントを手動で実行して、個々のパフォーマンスを評価してみてください...
于 2013-09-30T18:57:18.537 に答える