[英]PostgreSQL: Efficiently return table in PL/pgSQL function
我有以下用例:用户需要查询当前正在创建的表,因此目录中尚不存在。
因此,我实现了一个 PL/pgSQL 函数,该函数在表可用之前一直阻塞(通过轮询information_schema.tables
)。 当表可用时,它通过调用返回查询RETURN QUERY EXECUTE SELECT * FROM table
来返回表元组。
这在某种程度上效率低下,因为RETURN NEXT 和 RETURN QUERY 的当前实现在从函数返回之前存储了整个结果集(如https://www.postgresql.org/docs/current/plpgsql-control-structures.html 中所述)。
有没有更有效的方法通过函数返回表结果?
我想我追求的是类似于 Oracle RETURN PIPELINED
模式的功能,在这种模式下,结果会“流式传输”给用户,而无需先在函数中完全构建结果,就像 PostgreSQL 中的RETURN NEXT
。
如果通过此特定功能无法做到这一点,是否还有其他方法可以实现所需的功能?
您可能想要什么,但仅限于 C API 级别。
但是你的用例看起来很奇怪,这些操作在 SQL 级别上实现起来并不好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.