使用游标PLSQL的性能
Performance of using cursor PLSQL
我必须使用光标进行计数。
基本光标是
get *
from table
这里有三种类型的数据我想统计。
sysdate < start_date
sysdate > startdate and sysdate < enddate
sysdate > enddate
我有两种方法。
循环上述游标并使用 if 条件获取计数。
根据条件创建3个独立游标,直接获取计数
因为我有很多数据,从性能的角度来看,什么方法比较好?
- 根本不要使用光标。
使用条件聚合。这几乎肯定比任何基于游标的方法都要快。
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;
我必须使用光标进行计数。 基本光标是
get *
from table
这里有三种类型的数据我想统计。
sysdate < start_date
sysdate > startdate and sysdate < enddate
sysdate > enddate
我有两种方法。
循环上述游标并使用 if 条件获取计数。
根据条件创建3个独立游标,直接获取计数
因为我有很多数据,从性能的角度来看,什么方法比较好?
- 根本不要使用光标。
使用条件聚合。这几乎肯定比任何基于游标的方法都要快。
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;