Postgres 中的多语句查询

fny*_*fny 3 postgresql

我希望向 Postgres 数据库发送多个读取查询,以减少需要前往令人痛苦的远程数据库的次数。有什么东西libpq支持这种行为吗?

har*_*mic 5

是的,您可以使用libpq 中的异步处理函数。在链接页面上写着:

使用 PQsendQuery 和 PQgetResult 解决了 PQexec 的问题之一:如果命令字符串包含多个 SQL 命令,则可以单独获取这些命令的结果。(顺便说一句,这允许一种简单形式的重叠处理:客户端可以处理一个命令的结果,而服务器仍在处理同一命令字符串中的后续查询。)

例如,您应该能够PQsendQuery使用包含多个查询的字符串进行调用,然后重复调用PQgetResult以获取结果集。PQgetResult当没有更多结果集可供获取时,返回 NULL。

如果需要,您还可以避免应用程序在等待这些查询执行时发生阻塞(链接页面上有更详细的描述)。