将XML说明计划存储在PostgreSQL数据库中

编程入门 行业动态 更新时间:2024-10-26 04:22:58
本文介绍了将XML说明计划存储在PostgreSQL数据库中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

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

How can I store XML explain plan (or any other format) in PostgreSQL database?

测试数据: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语句中使用,以下语句也不起作用:

It seems that explain cannot be used in any other select statement, the following statement does not work either:

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

我们正在使用PostreSQL 9.1.6

We are using PostreSQL 9.1.6

推荐答案

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

It is not possible to capture EXPLAIN output using subqueries, you should go for a PL/pgSQL procedure:

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;

现在您可以像这样查询它:

Now you can query it like this:

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插入内容.

Perhaps explain output alone in the table is not so handy, I would rather added original query and timestamptz of the insert.

更多推荐

将XML说明计划存储在PostgreSQL数据库中

本文发布于:2023-10-23 18:55:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1521720.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数据库中   计划   XML   PostgreSQL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!