ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle11gr2的PLSQL优化NULL语句

Oracle11gr2的PLSQL优化NULL语句

原创 Linux操作系统 作者:yangtingkun 时间:2010-05-20 23:12:26 0 删除 编辑

文档没有提到这个特性,是测试的时候无意间发现的。

 

 

在11gr2中,NULL语句似乎被Oracle忽略掉:

SQL> SELECT * FROM V$VERSION;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

SQL> SET TIMING ON
SQL> BEGIN
  2  FOR I IN 1..10000 LOOP
  3  FOR J IN 1..10000 LOOP
  4  NULL;
  5  END LOOP;
  6  END LOOP;
  7  END;
  8  /

PL/SQL 过程已成功完成。

已用时间:  00: 00: 00.12
SQL> BEGIN
  2  FOR I IN 1..100000000 LOOP
  3  FOR J IN 1..100000000 LOOP
  4  NULL;
  5  END LOOP;
  6  END LOOP;
  7  END;
  8  /

PL/SQL 过程已成功完成。

已用时间:  00: 00: 00.03

从执行时间上判断,Oracle根本就没有执行循环和NULL语句,这个特性应该是11G才有的,11G以前Oracle会执行循环操作的:

SQL> SELECT * FROM V$VERSION;

BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit
Production
PL/SQL Release 9.2.0.4.0 - Production
CORE    9.2.0.3.0       Production
TNS for Linux: Version 9.2.0.4.0 - Production
NLSRTL Version 9.2.0.4.0 - Production

SQL> SET TIMING ON
SQL> BEGIN
  2  FOR I IN 1..10000 LOOP
  3  FOR J IN 1..10000 LOOP
  4  NULL;
  5  END LOOP;
  6  END LOOP;
  7  END;
  8  /

PL/SQL 过程已成功完成。

已用时间:  00: 00: 04.52
SQL> BEGIN
  2  FOR I IN 1..100000 LOOP
  3  FOR J IN 1..10000 LOOP
  4  NULL;
  5  END LOOP;
  6  END LOOP;
  7  END;
  8  /

PL/SQL 过程已成功完成。

已用时间:  00: 00: 44.94

同样的语句在9i中循环显然是起作用的。

显然9i或10g中利用循环和NULL语句使得Oracle运行一段时间的方法在11gr2中已经行不通了。

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4227/viewspace-663280/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-29

  • 博文量
    1964
  • 访问量
    11077127