1
自从版本9.3以来,PostgreSQL具有一些本机JSON operations。假设你有一个表,my_table
,具有json
列my_json_col
,结构如下:使用Postgresql查询检索JSON数组的前N条记录
[
{ "id": 1, "some_field": "blabla" },
{ "id": 2, "some_field": "foo" }
...
]
要检索的my_json_col
的第n个元素,可以执行类似:SELECT my_json_col->n FROM my_table WHERE ...
。因此,如果n = 1
,查询将返回我的示例中的"id": 2
记录。
我想检索前n个元素,例如如果n = 2
查询应该返回我的示例中的前两个记录。这可能吗?
这工作。我需要这个主要原因是因为性能 - 我可能正在处理一些巨大的JSON。关于'array_agg'和'json_array_elements'性能的任何想法?因为如果整个JSON列被加载到内存中,那么我需要考虑其他的东西。 – brito
我也对这种性能影响感兴趣。有没有人试过这个规模? –
就个人而言,如果你有很长的阵列,我对perf的表现并不乐观。我怀疑Postgres可以避免加载整个事情作为第1步。如果你只需要选择一些元素,那么我会去一个更传统的基于表格的结构。但是如果你真的有动力将它全部保存为JSON,那么我只需添加一堆测试数据并运行一些基准测试即可! –