ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Recursive Calls

Recursive Calls

原创 Linux操作系统 作者:ora_newbie 时间:2009-09-03 14:58:05 0 删除 编辑
    recursive calls统计在一段语句执行时,递归调用的次数。
    在执行SQL时,生成的执行计划可能牵涉到许多相关的调用执行,比如在执行Update时可能需要先select,这个select就是update的递归调用;在执行语句时可能还牵涉到对系统表的递归查询等操作,这些通通都算是递归调用。

看个例子:
先创建一个函数:
create or replace function testf return integer as
 --l_user varchar2(50) default user;
l_cnt integer;
begin
select count(*) into l_cnt from sys.all_objects;
return l_cnt;
end;


SQL> alter system flush shared_pool;

系统已更改。

SQL> select id,testf from rgs;

已选择19行。


执行计划
-----------------------------------------------------
etc..


统计信息
-----------------------------------------------------
     116999  recursive calls


SQL> select id,testf from rgs;

已选择19行。


执行计划
-----------------------------------------------------
etc..


统计信息
-----------------------------------------------------
     101783  recursive calls

SQL> select 101783/19 from dual;
 
 101783/19
----------
      5357
说明没查找一行要付出5357 recursive calls的代价。

SQL> select 116999-101783  from dual;
 
116999-101783
-------------
        15216

说明除掉testf函数部分的recursive calls,对其他部分的resursive calls(包括对系统表访问的recursive calls)的次数。

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

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-09-03

  • 博文量
    1
  • 访问量
    7290