Oracle性能优化之COUNT

示例代码

SELECT COUNT(1)
  INTO l_count
  FROM gl_je_headers h
 WHERE h.je_source != '13'
   AND h.attribute1 != '100005'
;
   
IF l_count > 0 THEN
  ...
ELSE
  ...
END IF;

我们在写PLSQL代码的时候,经常会出现类似上面的代码:查询表中是否存在满足某些条件的数据,如果存在做处理1,如果不存在做处理2。

当查询的表数据比较多的时候,需要遍历表,速度可能比较慢。如果我们在SQL语句中添加AND rownum = 1,那么当在表中找到一条数据,就不再继续找下面的数据了,提高性能。


优化后的代码:

SELECT COUNT(1)
  INTO l_count
  FROM gl_je_headers h
 WHERE h.je_source != '13'
   AND h.attribute1 != '100005'
   AND rownum = 1;
   
IF l_count > 0 THEN
  ...
ELSE
  ...
END IF;

性能优化对比

优化前:

Oracle性能优化之COUNT_第1张图片

优化后:

Oracle性能优化之COUNT_第2张图片

你可能感兴趣的:(oracle,oracle,dba,性能优化)