先建立一个存储过程,从一个大概40万条记录的数据库中,汇总金额。
一个是显式游标,一个是隐式游标。
分别执行。
-
CREATE OR REPLACE FUNCTION test()
-
RETURNS numeric AS
-
$BODY$
-
--
-
--测试显式游标和隐式游标的效率
-
--
-
declare
-
vamt numeric(14,4);
-
cur cursor is select * from wk_piece3;
-
rec record;
-
begin
-
--1)显示游标
-
/*
-
vamt := 0;
-
open cur;
-
loop
-
fetch cur into rec;
-
exit when not found;
-
vamt := vamt + rec.amount;
-
end loop;
-
close cur;
-
*/
-
-
--2)隐式游标
-
vamt :=0;
-
for rec in select * from wk_piece3 loop
-
vamt := vamt + rec.amount;
-
end loop;
-
-
return vamt;
-
-
end;$BODY$
-
LANGUAGE plpgsql VOLATILE
-
多次执行结果是:
1)显式游标时间:3秒左右
2)隐式游标时间:1.6秒左右
在效率上,隐式游标比显式游标大概快1倍。
阅读(1389) | 评论(0) | 转发(0) |