У меня есть несколько сотен записей, содержащих следующие данные:
{
"participants": [
{
"name": "xxxx"
},
{
"name": "xxxx"
}
],
"messages": [
{
"sender_name": "xxxx",
"timestamp_ms": 1xxxx,
"content": "xxxx",
"type": "xxxx"
},
{
"sender_name": "xxxx",
"timestamp_ms": xxxx,
"content": "xxxx",
"type": "xxxx"
}
],
"title": "xxxx",
"is_still_participant": xxxx,
"thread_type": "xxxx",
"thread_path": "xxxxx"
}
До сих пор я сделал следующее
psql
select ab.value, tb.messagenumber, message:: json ->> 'title' as title
FROM public.ImportTable as tb, json_array_elements(message:: json ->
'messages') as ab
То, что я ожидаю, в основном:
Message array 1 | MessageID 1|Title 1
Message array 2 | MessageID 1|Title 1
Message array 3 | MessageID 1|Title 1
Message array 4 | MessageID 1|Title 1
Message array 1 | MessageID 2|Title 2
Message array 2 | MessageID 2|Title 2
Массив сообщений типа jsonb, идентификатор bigint и заголовок типа text.Затем я буду использовать следующий оператор, чтобы превратить массив в значения пары ключей.
psql
SELECT * FROM public.jsonmessage as tb, json_each_text(Message array::
json)
Моя проблема заключается в том, что все работает отдельно, но мне нужно 2-3 промежуточных таблицы, чтобы выполнить его.Мои запросы также необычно медленны, когда я пытаюсь сделать несколько вещей одновременно, в то время как они выполняются довольно быстро по отдельности.Ребята, есть ли у вас какие-либо предложения относительно того, как это ускорить?