测量PL / SQL中SELECT语句的开销

时间:2015-12-05 17:00:15

标签: sql oracle plsql oracle11g

我正在尝试衡量精选费用的多少。通常我会简单地通过在执行语句之前获取一致获取的值来实现它,然而,之后,我想将它包装在PL / SQL中,以便它更通用。然而,我面临的问题是,如何在不实际存储结果的情况下简单地运行选择?

我的一个想法是将它包装在一个for循环中,如此

select value into getsBefore from v$sesstat ...

for dummy in (select name from my_table where city = 'XYZ') loop
  i := i;
end loop;

select value into getsAfter from v$sesstat ...

但这似乎不是一种正确的做法。

我想我可以简化我的问题 - 我该怎样SELECT something INTO <nothing>

关于如何实现这一目标的任何想法或提示?

由于

2 个答案:

答案 0 :(得分:1)

尝试:SELECT * bulk collect INTO [variable]

将此视为参考SELECT INTO Statement

答案 1 :(得分:0)

由于会话启动后V$SESSSTAT中的计数器是绝对的,因此除了在操作之前存储快照,然后在执行操作后从新的快照中删除快照之外别无其他方法。

Tom Kyte最常用的脚本之一是 RUNSTATS ,旨在比较执行相同操作的两个操作,看看哪个实现更好。

您可以在http://betteratoracle.com/posts/12-runstats

找到包含说明的版本