【发布时间】:2018-11-03 17:09:45
【问题描述】:
我正在尝试在 postgresql 中运行 'explain analyze' foreach 循环,但在 postgres 文档中没有找到合适的示例。谁能帮帮我。
这是一个例子
CREATE OR REPLACE FUNCTION xyz() RETURNS TRIGGER AS $xyz$
DECLARE
idList integer[];
aa integer;
bb bigint;
cc integer;
dd smallint;
BEGIN
IF NEW.severity = 7
THEN
idList := array(select someid from sometable where someid like NEW.someid);
END IF;
FOREACH Id in ARRAY alarmIdList LOOP
select a, b, c, d
into aa, bb, cc , dd
from SomeActivetable where someid = Id;
insert into SomeTable2(ba, bb, bc, bd)
values(aa, bb, 6, dd);
END LOOP;
END IF;
RETURN NEW;
END;
$xyz$ LANGUAGE plpgsql;
谢谢, 古拉夫
【问题讨论】:
-
请分享一个你有的plpgsql
-
您不能在 PL/pgSQL 语句上运行
explain。这只适用于SQL statements -
举个例子,如果我想分析整个函数。有什么办法?
-
您不需要
foreach循环或中间变量来保存idlist,您可以使用单个insert ... select ...语句来做到这一点:dpaste.com/0H9F015 但where someid like new.someid不会有什么感觉。LIKE用于字符串值,而不是整数值。 -
当然可以,但现在我有兴趣分析每个循环或函数。
标签: postgresql query-performance sql-execution-plan explain