看看all_argouments和all_objects里面有多少条纪录

解决方案 »

  1.   

    直接查user_procedures这个吗,看看速度怎么样
      

  2.   

    select a.* from all_arguments a,all_objects b
    where b.object_type='PROCEDURE'
      and a.object_name=b.object_name
    改成
    法一:
    select a.* from all_arguments a,all_objects b
    where    a.object_name=b.object_name and
             b.object_type='PROCEDURE'
    法二:all_arguments与all_objects 表哪个大,哪个小,建议小表放到右边.
    法三:如果取出只有44条,说明你的选择性好.不过不知你是否用上了索引,
       sql>set autotrace traceonly;
    看执行计划
      

  3.   

    搂主的27秒是怎样测试的?如果你是通过set timing on 在sqlplus里测试的话,或许你的27秒并不是你的SQL语句执行的实际时间。我的数据库中的这两个表的纪录个数如下:
    SQL> set timing on
    SQL> select count(*) from all_objects;      7874目前歷時: 00:00:00.02
    SQL> select count(*) from all_arguments;     26796目前歷時: 00:00:00.00
    我通过sqlplus执行你的语句花了32秒:
    .....
    已選取 159 個資料列.目前歷時: 00:00:32.08但是当我 set heading off;后,再次执行你的语句只花了3秒:
    ......
    已選取 159 個資料列.目前歷時: 00:00:03.03