Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql Postgres中的多状态查询_Postgresql - Fatal编程技术网

Postgresql Postgres中的多状态查询

Postgresql Postgres中的多状态查询,postgresql,Postgresql,我希望向Postgres数据库发送多个读取查询,以减少需要访问痛苦的远程数据库的次数。libpq中是否有支持此行为的内容?是的,您可以在libpq中使用。在链接页面上显示: 使用PQsendQuery和PQgetResult解决了PQexec的一个问题:如果 一个命令字符串包含多个SQL命令,这些命令的结果 命令可以单独获取。(这允许一种简单的 顺便说一下,重叠处理:客户端可以处理 服务器稍后仍在运行时的一个命令的结果 使用相同的命令字符串进行查询。) 例如,您应该能够使用包含多个查询的字符串调

我希望向Postgres数据库发送多个读取查询,以减少需要访问痛苦的远程数据库的次数。
libpq
中是否有支持此行为的内容?

是的,您可以在libpq中使用。在链接页面上显示:

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

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


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

PQgetResult
的文档说它“等待下一个结果”。那到底是什么意思?这似乎意味着访问数据库的次数实际上不会减少。如果“往返”的意思是发送一组命令,然后返回一组结果,那么只有一次往返。请注意,只要您连接到数据库,libpq就会保持连接处于活动状态-这与http不同,例如,对于每个请求,都会与主机建立TCP连接,发送请求,接收响应,然后关闭连接。libpq发送请求,服务器执行命令,通过始终保持打开状态的连接发回一个或多个结果集。