PostgreSQL:如何通过网络发送结果(使用JOIN)?

时间:2014-12-02 21:41:23

标签: postgresql networking join

如果我创建一个将 m 行连接到每个 n 结果上的查询,我将得到总共 n * m 个结果行(每个结果都会加上 m 行)。

如果我通过网络连接, n * m 行是通过网络发送的,还是PostgreSQL软件足够聪明以更短的方式表示它? (即n1 *(m1,m2,m3)代替n1m1,n1m2,n1m3等)

1 个答案:

答案 0 :(得分:1)

我认为简短的回答是 no

来自Postgres Message Flow doc:

  

在简单查询模式下,检索值的格式始终为文本,   除非给定的命令是来自声明的游标的FETCH   BINARY选项。在这种情况下,检索的值是二进制的   格式。 RowDescription消息中给出的格式代码告诉   正在使用哪种格式。

对于扩展查询模式

  

Bind还指定了用于返回的任何数据的格式   查询;格式可以整体指定,也可以按列指定。

关于 RowDescription 消息:

  

表示即将返回行以响应SELECT,   FETCH等查询。此消息的内容描述了该列   行的布局。接下来是DataRow消息   每一行都返回到前端。

所以这种格式可以是二进制或纯文本,但我不相信你提到的任何类型的因式编码。也就是说,它将以指定格式列出所有列,在上述情况下将为(n1, n2, n3, m1, m2, m3)