我有几百条包含以下数据的记录:
{
"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类型,id是bigint,标题是文本类型。 然后,我将使用以下语句将数组转换为键对值。
psql
SELECT * FROM public.jsonmessage as tb, json_each_text(Message array::
json)
我的问题是,一切都可以分开工作,但是我需要2-3个登台表才能完成。当我尝试同时执行多项操作时,我的查询也异常缓慢,而它们的查询速度却很快。你们对如何加快速度有什么建议吗?