Closed wuchen0221 closed 2 years ago
确认一下and之后是不是都抵消了成为空的了
用and是因为将标签名和标签值联合查询,通过明细表确定是有交集的。怀疑是不是数据集过大导致超出限制。 select tagvalue from tag where tagtype='chname' and tagname='张伟' -- 60622条记录 select tagvalue from tag where tagtype='sex' and tagname='女' -- 57262429条记录 在明细表中求select count(*) from detail where chname = '张伟' and sex = '女' --10233条记录 用其他方式统计: select count(T.id) from ( select unnest(rb_to_array( tagvalue)) as id from tag where tagtype = 'chname' and tagname='张伟' intersect select unnest(rb_to_array( tagvalue)) as id from tag where tagtype = 'sex' and tagname='女' ) T; -- 10233条记录
用的是不是最新0.5.1版本? 我这边复现不了你说的问题。参考下面,构造一个能复现的例子吧
=# with t(bitmap) as(
select rb_fill('{}',1,100000000)
union all
select rb_fill('{}',1,50000)
)
select rb_and_cardinality_agg(bitmap) from t;
rb_and_cardinality_agg
------------------------
49999
(1 row
无法复现,先关闭
例如标签字段SEX的值的个数是57262429,而使用rb_and_agg,rb_or_cardinality_agg函数都无法返回正常结果,相同条件下标签值的个数较少时则正常 链接:https://pan.baidu.com/s/1C1mt96BrlcDRj_5M1ki8OQ 提取码:8e8t 链接:https://pan.baidu.com/s/18C10tQFmynkBsZZ5gtQXQw 提取码:3u3p