終了までに時間がかかる重要な文を最適化することを望んでいました。optimizeマイナス・オラクルで問合せを挿入
基本的に処理する:
1)5を挿入、一つ一つによってNG_ORGANIZATION_CATEGORY_GTMPにデータを挿入します。これらのDMLは、クエリごとに10秒かかることがあります。 (この表は約414K行を持っている)だけで、テーブルの上にNG_ORGANIZATION_CATEGORY約6行を挿入、
Insert 1 - 292770
Insert 2 - 106648
Insert 3 - 67358
Insert 4 - 47775
Insert 5 - 6147
2)問題のあるクエリの実行:最後のトレースからは、これらのDMLは、行の下の数を挿入します。
INSERT INTO NG_ORGANIZATION_CATEGORY(ORGANIZATION_ID,CATEGORY_CODE,ADDED_DATE)
SELECT ORGANIZATION_ID,CATEGORY_CODE,:B1 AS ADDED_DATE
FROM NG_ORGANIZATION_CATEGORY_GTMP
WHERE (ORGANIZATION_ID,CATEGORY_CODE) IN (
SELECT ORGANIZATION_ID,CATEGORY_CODE
FROM NG_ORGANIZATION_CATEGORY_GTMP
MINUS
SELECT ORGANIZATION_ID,CATEGORY_CODE
FROM NG_ORGANIZATION_CATEGORY);
3)NG_ORGANIZATION_CATEGORYテーブルからデータを削除します。それだけでなく、大丈夫です。以下は
DELETE FROM NG_ORGANIZATION_CATEGORY
WHERE
(ORGANIZATION_ID,CATEGORY_CODE) IN (SELECT ORGANIZATION_ID,CATEGORY_CODE
FROM NG_ORGANIZATION_CATEGORY MINUS SELECT ORGANIZATION_ID,CATEGORY_CODE
FROM NG_ORGANIZATION_CATEGORY_GTMP);
問題の挿入のためのトレースです:
SQL ID: gwxs083gcfdd2 Plan Hash: 2436575860
INSERT INTO NG_ORGANIZATION_CATEGORY(ORGANIZATION_ID,CATEGORY_CODE,ADDED_DATE)
SELECT ORGANIZATION_ID,CATEGORY_CODE,:B1 AS ADDED_DATE FROM
NG_ORGANIZATION_CATEGORY_GTMP WHERE (ORGANIZATION_ID,CATEGORY_CODE) IN (
SELECT ORGANIZATION_ID,CATEGORY_CODE FROM NG_ORGANIZATION_CATEGORY_GTMP
MINUS SELECT ORGANIZATION_ID,CATEGORY_CODE FROM NG_ORGANIZATION_CATEGORY)
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.00 0 0 0 0
Execute 1 6704.07 6705.98 2 424814954 25 6
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 2 6704.07 6705.98 2 424814954 25 6
Misses in library cache during parse: 1
Misses in library cache during execute: 1
Optimizer mode: ALL_ROWS
Parsing user id: 146 (recursive depth: 1)
Number of plan statistics captured: 1
Rows (1st) Rows (avg) Rows (max) Row Source Operation
---------- ---------- ---------- ---------------------------------------------------
0 0 0 LOAD TABLE CONVENTIONAL (cr=424814954 pr=2 pw=0 time=923492126 us)
6 6 6 FILTER (cr=424814953 pr=0 pw=0 time=1667461141 us)
414050 414050 414050 TABLE ACCESS FULL NG_ORGANIZATION_CATEGORY_GTMP (cr=1023 pr=0 pw=0 time=121231 us cost=2 size=35 card=1)
6 6 6 MINUS (cr=424813930 pr=0 pw=0 time=2409881660 us)
414050 414050 414050 SORT UNIQUE NOSORT (cr=423573150 pr=0 pw=0 time=2406932080 us cost=3 size=35 card=1)
414050 414050 414050 TABLE ACCESS FULL NG_ORGANIZATION_CATEGORY_GTMP (cr=423573150 pr=0 pw=0 time=2406112290 us cost=2 size=35 card=1)
414044 414044 414044 INDEX UNIQUE SCAN NG_ORG_CATEGORY_PK (cr=1240780 pr=0 pw=0 time=2134347 us cost=2 size=11 card=1)(object id 108100)
Elapsed times include waiting on following events:
Event waited on Times Max. Wait Total Waited
---------------------------------------- Waited ---------- ------------
gc cr grant 2-way 1 0.00 0.00
db file sequential read 2 0.13 0.13
gc current grant 2-way 6 0.00 0.00
********************************************************************************
あなたは私を助けて、私はどのように私はこのクエリをチューニングすることができます教えてくださいもらえますか?私は並列ヒントを追加することを考えていましたが、クエリのMINUSのために無視されます。
ご意見やご要望がありましたら教えてください。
あなたの注意を喚起してください。事前に
おかげで、
ウィル
ありがとうございます..私はこれを試してみましょう! – Will
こんにちは@scaisEdge ...私は働いて、1秒未満で走った!私はちょうどデータを確認する必要がありますが、私は挿入前にカウントMINUSを実行し、同じ数のデータを挿入しました。私は月曜日に開発者に確認し、この記事に戻ってきます!今のところ、ありがとう、あなたは男です! – Will
私の答えが正しければそれを受け入れられたものとしてマークしてください...どうぞこちらをご覧ください http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – scaisEdge