gpt4 book ai didi

json - Postgres 集群 (citus) : Range Query on nested jsonb column

转载 作者:行者123 更新时间:2023-11-29 12:42:54 25 4
gpt4 key购买 nike

我正在使用配置为使用 citus 5.2 的集群的 postgres 9.5.4

已使用以下命令对表进行分片。

SELECT master_create_distributed_table('mytest', 'id', 'hash');
SELECT master_create_worker_shards('mytest', 16, 1);

从下面存储在 jsonb 列中的示例 json 数据,我想搜索匹配的记录

o['mid'] > 7000

这是一个用户记录的样本。将有数百万这样的用户。

{   "uid": 14105529,   "o": [
{
"mid": 6551,
"ac": 1913,
"ip": "144.36.233.44",
"adw": 5,
"at": 133000,
"ad": 151015,
"aid": 0
},
{
"mid": 7552,
"ac": 1913,
"ip": "144.36.233.44",
"adw": 5,
"at": 133000,
"ad": 151015,
"aid": 0
},
{
"mid": 7553,
"ac": 1913,
"ip": "144.36.233.44",
"adw": 5,
"at": 133000,
"ad": 151015,
"aid": 0
} ]
}

下面的查询抛出错误,因为它在未分片的表上执行。

select count(1) from mytest,jsonb_array_elements(data->'l') where (value->>'e')::bigint>7000;

ERROR: cannot perform distributed planning on this query

DETAIL: Complex table expressions are currently unsupported

最佳答案

jsonb_array_elements(data->'l') 导致创建 CTE,导致此查询被拒绝,您可以重写查询以避免连接吗?

关于json - Postgres 集群 (citus) : Range Query on nested jsonb column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40056654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com