我有一个PL/SQL过程,仅用于测试。它检查选择结果之间的差异。问题是其中一个选择(SELECT A)需要很长时间来处理,其结果用于其他5个选择。所以它必须运行5次。
我对PL/SQL没有太多的经验。我想以某种方式存储(SELECT A)的结果,以便它只运行一次。我希望它能提高整个过程的性能。
所有选择(SELECT A、SELECT B、SELECT C、SELECT D)都是需要比较的3列行。
我不能使用 execute immediate。
当前代码看起来像这样(使用简化的SQL):
create or replace package body TESTS AS
res1 numeric;
res2 numeric;
res3 numeric;
procedure compare_groups as
begin
for res in (
select distinct id as user_id
from users
) loop
select count(*) into res1 from (
(SELECT A where user_id = res.user_id) MINUS (SELECT B where user_id = res.user_id)
);
select count(*) into res2 from (
(SELECT A where user_id = res.user_id) MINUS (SELECT C where user_id = res.user_id)
);
select count(*) into res3 from (
(SELECT A where user_id = res.user_id) MINUS (SELECT D where user_id = res.user_id)
);
DBMS_OUTPUT.PUT_LINE('Res1: ' || res1);
DBMS_OUTPUT.PUT_LINE('Res2: ' || res2);
DBMS_OUTPUT.PUT_LINE('Res3: ' || res3);
end loop;
end compare_groups;
end TESTS;
1条答案
按热度按时间axzmvihb1#
慢性创伤性脑炎呢?
这是一个简单的例子,我希望你能理解。
输出量: