【发布时间】:2019-09-20 14:03:37
【问题描述】:
我有一个存储过程,它返回多个 OUT 参数,这些参数由来自 SELECT COUNT(*) 查询的结果组成。下面的代码 sn-p 运行良好,但似乎很慢。
我有多达 30 个不同的 OUT 参数,这意味着我运行了 30 个单独的查询,这可能就是查询运行如此缓慢的原因。
有人对我如何加快这段代码的速度有任何建议吗?
PROCEDURE get_counts(
count1 OUT INT,
count2 OUT INT,
count3 OUT INT,
.. etc.
) IS
l_count1 INT;
l_count2 INT;
l_count3 INT;
.. etc.
BEGIN
SELECT COUNT(*) INTO l_count1 from table1 where condition_blah;
SELECT COUNT(*) INTO l_count2 from table1 where condition_blah;
SELECT COUNT(*) INTO l_count3 from table1 where condition_blah;
... etc
count1 := l_count1;
count2 := l_count2;
count3 := l_count3;
.. etc
END get_counts;
【问题讨论】:
-
我不认为你可以加快这个过程。该过程很慢,因为您运行多个选择不是由于 OUT 参数的数量。您必须优化查询,而不是过程。
-
所有查询的“condition_blah”是否总是相同的?
-
条件都不一样。
标签: sql oracle stored-procedures plsql