postgres在函数中创建临时表很慢

时间:2016-10-03 03:30:46

标签: postgresql plpgsql temp-tables

我面临一个奇怪的问题。在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分钟。请帮助我,我很想知道这种差异的原因。

0 个答案:

没有答案