使用游标PLSQL的性能

Performance of using cursor PLSQL

我必须使用光标进行计数。 基本光标是

get *
from table

这里有三种类型的数据我想统计。

sysdate < start_date
sysdate > startdate and sysdate < enddate
sysdate > enddate

我有两种方法。

  1. 循环上述游标并使用 if 条件获取计数。

  2. 根据条件创建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;