1

我正在使用使用 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;

错误:无法对此查询执行分布式计划

详细信息:目前不支持复杂的表表达式

4

1 回答 1

3

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

于 2016-11-09T20:11:48.647 回答