使用游标 PLSQL 的性能
Posted
技术标签:
【中文标题】使用游标 PLSQL 的性能【英文标题】:Performance of using cursor PLSQL 【发布时间】:2020-03-10 02:12:32 【问题描述】:我必须使用光标进行计数。 基本光标是
get *
from table
在这里,我想计算三种类型的数据。
sysdate < start_date
sysdate > startdate and sysdate < enddate
sysdate > enddate
我有两种方法。
循环上述游标并使用 if 条件获取计数。
根据条件创建3个单独的游标,直接获取计数
由于我有很多数据,从性能的角度来看,哪种方式更好?
【问题讨论】:
【参考方案1】:-
根本不要使用光标。
使用条件聚合。这几乎肯定比任何基于光标的方法都要快。
SELECT count(CASE
WHEN sysdate < start_date THEN
1
END) count1,
count(CASE
WHEN sysdate > startdate
AND sysdate < enddate THEN
1
END) count2,
count(CASE
WHEN sysdate > enddate THEN
1
END) count3
FROM elbat;
【讨论】:
这是一个好方法。但我听说游标可以处理异常,这是我们在整个项目中使用的一个优势。如果我使用这个会是一个问题吗?。 你已经“听说过游标处理异常”,你听错了。游标只不过是一条 SQL 语句,它允许您一次处理返回 1 的行。他们无法处理异常。异常只能由 pl/sql 块的异常部分处理。你为它的作用编写代码。以上是关于使用游标 PLSQL 的性能的主要内容,如果未能解决你的问题,请参考以下文章