Woo*_*Moo 0 sql database oracle performance oracle10g
以下SQL生成具有相同模式的两个表之间的所有匹配记录,然后继续迭代存储此结果集的游标.我在这个函数的末尾用行提交逐行插入.我的问题是如何从这种类型的查询中获得最大的性能?代码如下:
BEGIN
DECLARE
CURSOR foo IS
SELECT * FROM tableOne to
WHERE EXISTS (SELECT * FROM tableTwo tt
WHERE TO.FOO = TT.FOO
AND TO.BAR = TT.BAR); --THIS TAKES 5 MINUTES (66 MILLION ROWS)
BEGIN
FOR nextFoo IN foo
LOOP
INSERT INTO tracker t
(id,foo,bar,baz)
VALUES(trackerSequence.nextval, nextFoo.foo,nextFoo.bar,nextFoo.baz);
END LOOP;
COMMIT;
END;
END;
Run Code Online (Sandbox Code Playgroud)
此查询可能需要一个多小时,我正在尝试减少与之相关的时间成本.我将处理一般的1.4亿条记录,所以我希望这个过程花费的时间加倍.所有列都已编制索引.
版本信息:
10克10.2
怎么样
INSERT INTO tracker t SELECT trackerSequence.nextVal
,foo
,bar
,baz
FROM tableOne to
INNER JOIN tabletwo tt
ON (to.foo = tt.foo and to.bar=tt.bar);
Run Code Online (Sandbox Code Playgroud)
我想知道这是否会更好地优化.
还要确保在插入时禁用跟踪器 - 索引.
| 归档时间: |
|
| 查看次数: |
14698 次 |
| 最近记录: |