使用这个选择:
select 'some_table' as table_name, jsonb_agg(t.*) as content
from some_table t;
如果 some_table 有 1000 行,“内容”中每一行重复的“列名”是否通过网络发送了 1000 次?还是以某种方式优化了?如果列名真的每行重复一次,我们会为它们花费更多的带宽,然后是值。
使用这个选择:
select 'some_table' as table_name, jsonb_agg(t.*) as content
from some_table t;
如果 some_table 有 1000 行,“内容”中每一行重复的“列名”是否通过网络发送了 1000 次?还是以某种方式优化了?如果列名真的每行重复一次,我们会为它们花费更多的带宽,然后是值。
它没有优化。每个列名称,作为一个 JSON 键,被完整地多次发送。您可以尝试通过 SSL 连接并打开压缩,但出于安全原因,大多数系统默认禁用此功能,并且越来越难以打开。
如果这是您无偿使用 JSON 所必须付出的最高成本,那么请认为自己很幸运。