vpd性能很差,如何优化?

[复制链接]
查看11 | 回复0 | 2007-7-25 13:14:00 | 显示全部楼层 |阅读模式
vpd性能很差,请教如何改进?
VPD函数
Function AuditDMLPolicy(p_cSchema varchar2,p_cObject Varchar2) Return Varchar2
is
begin
return '1=1'
end;
在有VPD环境下:
set timing on
begin
for i in 1..10000 loop
execute immediate 'update ccc.test set name='||to_char(i)||' where obj#='||to_char(i);
commit;
end loop;
end;
/
PL/SQL 过程已成功完成。
已用时间:00: 00: 22.07
在没有vpd的环境下
begin
for i in 1..10000 loop
execute immediate 'update ccc.test set name='||to_char(i)||' where obj#='||to_char(i);
commit;
end loop;
end;
/
PL/SQL 过程已成功完成。
已用时间:00: 00: 08.07
速度相差3倍左右
单独的VPD函数运行是非常快的,排除了函数调用的开销和soft parse问题
set timing on
declare
a varchar2(30);
begin
for i in 1..10000 loop
select fgacpkg.auditdmlpolicy('SYS','CCC') into a from dual;
end loop;
end;
/
PL/SQL 过程已成功完成。
已用时间:00: 00: 00.06
不能采用static指定来略过vpd函数,vpd函数必须运行
谢谢指点,提供思路
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行