我面临一个奇怪的问题。在PostgreSQL中,我想在函数中创建一个临时表。使用以下语句创建:
CREATE TEMPORARY TABLE mytemp ON COMMIT DROP
AS SELECT empid, sal, myfunction(empid,sal) FROM emp;
当我自己运行时,需要28秒。但是当我把它放入功能代码时,需要3分钟。我通过在创建语句之前和之后显示clock_timestamp()
来验证时间。该功能的一部分是:
begin
/*..... other code lines...*/
v_select:='select empid, sal, myfunction(empid,sal) from emp';
raise notice '%','time - '||clock_timestamp();
execute 'create temporary table mytemp on commit drop as '||v_select;
raise notice '%','time - '||clock_timestamp();
/*..... other code lines...*/
end;
执行需要3分钟。请帮助我,我很想知道这种差异的原因。