gpt4 book ai didi

xml - 在 PostgreSQL 数据库中存储 XML 解释计划

转载 作者:数据小太阳 更新时间:2023-10-29 02:54:05 24 4
gpt4 key购买 nike

如何在 PostgreSQL 数据库中存储 XML 解释计划(或任何其他格式)?

测试数据:explain (verbose, format xml) select 1

存储结果的表:create table tmp.explain_plan_data (expp xml);

我的天真测试失败了:

insert into tmp.explain_plan_data values (explain (verbose, format xml) select 1);

explain 似乎不能用在任何其他select 语句中,下面的语句也不起作用:

select * from (explain (verbose, format xml) select 1) a

我们正在使用 PostreSQL 9.1.6

最佳答案

使用子查询无法捕获 EXPLAIN 输出,您应该使用 PL/pgSQL 过程:

CREATE OR REPLACE FUNCTION explain_v_xml(in_sql text)
RETURNS TABLE(explain_line xml) AS $explain_v_xml$
BEGIN
RETURN QUERY EXECUTE 'EXPLAIN (VERBOSE, FORMAT xml) '||in_sql;
END;
$explain_v_xml$ LANGUAGE plpgsql;

现在你可以这样查询了:

SELECT explain_line FROM explain_v_xml('SELECT * FROM pg_locks');

然后插入到你的目标表中:

INSERT INTO tmp.explain_plan_data SELECT explain_v_xml('SELECT 1');
SELECT * FROM tmp.explain_plan_data;

也许单独在表中解释输出不是那么方便,我宁愿添加插入的原始查询和timestamptz

关于xml - 在 PostgreSQL 数据库中存储 XML 解释计划,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14747331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com