【发布时间】:2018-04-12 06:25:56
【问题描述】:
我有一个简单的 PL/SQL 代码,我希望对其进行优化。我有这个过程,它接受两个参数,param1(table id) 和 param2(date)。它的作用是遍历表并检查 param2 是否介于 fld_date1 和 fld_date2 列的值之间。如果是,它执行另一个逻辑。该表不能再接受除表 id 之外的其他参数。下面是sn-p
procedure proc1(
param1 id table
,param2 date
)
is
begin
for n in tab(param1).row_list loop
if param2 >= n.fld_date1
and param2 <= n.n.fld_date2 then
(...);
end if;
end loop;
end proc1;
这个可行,但我想你们中的一些人可能会想到一个更好的版本。我担心的是通过大量行迭代的性能。非常感谢任何帮助/建议。
谢谢!
【问题讨论】:
-
难道您不能只使用 SELECT 来获取相关记录,然后让您的逻辑对其进行操作吗?在我看来,您无缘无故地强制进行表扫描。
-
您好,感谢您的回复,但不允许直接访问表格。
-
您确定
tab(param1).row_list,param1 id table是有效的pl/sql语法吗? -
什么构成“大量行”?您是否进行过任何测试以查看是否存在性能问题?遍历集合非常非常快。从您的表中构建此集合所需的时间可能会比迭代次数多得多。
标签: for-loop optimization plsql procedure