【发布时间】:2009-09-25 13:25:57
【问题描述】:
我正在尝试将数据从 oracle 加载到 sql server(抱歉之前没有写过这个)
我有一个至少有 100 万条记录的表(实际上是一个包含来自不同表的数据的视图)。我以这样一种方式设计了我的包,即我具有业务逻辑功能并直接在选择查询中调用它们。
例如:
X1(id varchar2)
x2(id varchar2, d1 date)
x3(id varchar2, d2 date)
Select id, x, y, z, decode (.....), x1(id), x2(id), x3(id)
FROM Table1
注意:我的表有 20 列,我在至少 6-7 列上调用 5 个不同的函数。 并且一些函数将传递的参数与审计表进行比较并执行逻辑
如何提高查询的性能或有更好的方法来做到这一点
我尝试在 C# 代码中执行此操作,但初始选择的记录对于数据集来说足够大,并且出现内存不足异常。
我的函数会选择然后执行逻辑,例如:
Function(c_x2, eid)
Select col1
into p_x1
from tableP
where eid = eid;
IF (p_x1 = NULL) THEN
ret_var := 'INITIAL';
ELSIF (p_x1 = 'L') AND (c_x2 = 'A') THEN
ret_var:= 'RL';
INSERT INTO Audit
(old_val, new_val, audit_event, id, pname)
VALUES
(p_x1, c_x2, 'RL', eid, 'PackageProcName');
ELSIF (p_x1 = 'A') AND (c_x2 = 'L') THEN
ret_var := 'GL';
INSERT INTO Audit
(old_val, new_val, audit_event, id, pname)
VALUES
(p_x1, c_x2, 'GL', eid, 'PackgProcName');
END IF;
RETURN ret_var;
【问题讨论】:
-
您要为所有 1,000,000 条记录运行这些函数吗?是的,它需要一些时间来运行——当然不是毫秒。您的期望是什么?
-
我从来没有说过我想要毫秒,它运行了 1 小时..所以我想提高(增强)性能我说过......我没有写我希望它完成一眨眼