samungtered 2008-12-08 22:12
浏览 222
已采纳

在oracle9i中如何编写sql或者存储过程来知道执行sql或者函数花费的时间?

在oracle9i中如何编写sql或者存储过程来知道执行sql或者函数花费的时间?
比如:我有两种sql的写法
[quote]
[code="sql"]
SELECT temp.name

FROM (

SELECT count(DISTINCT tempone.goodsname) as nums,

tempone.name

FROM tempone

GROUP BY tempone.name

) temp

WHERE temp.nums > 1
[/code]

[code="sql"]
select t1.name from tempone t1,tempone t2 where t1.name = t2.name and t1.goodsname != t2.goodsname group by t1.name;

[/code]
[/quote]

我想通过一定的方式 执行如上的两种sql语句来比较执行效益.我已经用存储过程执行了插入了20w条记录。
现在就要问各位有什么方式可以来比较其执行效益的。
而且执行先前的sql后会有数据缓存,对后面的操作时间也会有影响,我该怎么办呢??
有个经验的同学给个好的解决方案,没有说下解决这个问题的思路也可以
先谢谢各位了...
[b]问题补充:[/b]
只有依靠工具了吗》pl/sql不能像java一样可以来通过执行前的系统时间减去执行完成的时间得到整个运行时间吗? 或者其他别的方法?
[b]问题补充:[/b]
谢谢你的 回答
可以看下这个帖子 http://www.iteye.com/topic/289339
方法二 就是我要问的~ 但方法还没完善~
我希望能有个函数可以输出执行SqL消耗的时间

  • 写回答

4条回答 默认 最新

  • jake0520 2008-12-10 16:13
    关注

    1.可以用很多工具查看explain plan, 比如楼上说的。

    1. 通过PL/SQL查看执行计划:

    方法一. Set AutoTrace on;
    然后当执行你的sql语句的时候,执行计划自动显示出来。
    不想看执行计划了,set autoTrace off;
    方法二.执行语句: explain plan for [你的sql语句]
    比如: explain plan for select * from table1
    然后 执行:select * from table(DBMS_XPLAN.DISPLAY)就可以看到它的执行计划了。

    方法三: 类似方法二,前一句sql不变,第二句改为下面sql同样可以显示执行计划(原理一样):
    select plan_table_output from table(dbms_xplan.display('plan_table',null,'serial'));

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)