PostgreSQL имеет некоторые родные JSON operations, так как verison 9.3. Предположим, у вас есть таблица, my_table
с json
колонны, my_json_col
, структурирована следующим образом:Извлечь первые N записей массива JSON с запросом Postgresql
[
{ "id": 1, "some_field": "blabla" },
{ "id": 2, "some_field": "foo" }
...
]
Для получения п-й элемент my_json_col
, вы должны выполнить что-то вроде: 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, я бы просто добавил кучу тестовых данных и запустил некоторые тесты! –