我们有一个查询,我们想优化它以获得高性能。表中的消息列为JSONB类型,它包含一个大的json对象。有什么方法可以优化这个吗?我们已经在batch_num上找到了一个索引
SELECT jsonb_array_elements_text(message #> '{results}') AS res FROM TABLE WHERE batch_num = '11';发布于 2020-12-11 18:42:52
通过使用jsonb建模,您将自己画到了一个角落。要提取属性,必须读取整个大的内容。
我所能想到的最好的方法是将大对象中的期望值分解为它自己的列:
ALTER TABLE mytab
ADD results jsonb GENERATED ALWAYS AS (message -> 'results') STORED;这将适用于最近的PostgreSQL版本;对于较早的版本,您可以使用执行相同操作的触发器。
然后,您只需读取results列,而不必读取整个message。
https://dba.stackexchange.com/questions/281357
复制相似问题