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,那麼我只需添加一堆測試數據並運行一些基準測試即可! –