Roaring Bitmap操作符
GaussDB(DWS)自8.1.3集群版本开始,支持高效的位图处理操作符,可用于用户画像,精准营销等场景,极大的提高了查询性能。
=
描述:比较两个roaringbitmap是否相等。
返回值类型:bool
示例:
1 2 3 4 5 6 7 8 9 10 |
SELECT rb_build('{1,2,3}') = rb_build('{1,2,3}'); ?column? ---------- t (1 row) SELECT rb_build('{2,3}') = rb_build('{1,2,3}'); ?column? ---------- f (1 row) |
<>
描述:比较两个roaringbitmap是否不相等。
返回值类型:bool
示例:
1 2 3 4 5 6 7 8 9 10 |
SELECT rb_build('{1,2,3}') <> rb_build('{1,2,3}'); ?column? ---------- f (1 row) SELECT rb_build('{2,3}') <> rb_build('{1,2,3}'); ?column? ---------- t (1 row) |
&
描述:计算两个roaringbitmap交集以后的结果。
返回值类型:roaringbitmap
示例:
1 2 3 4 5 |
SELECT rb_to_array(rb_build('{2,3}') & rb_build('{1,2,3}')); rb_to_array ------------- {2,3} (1 row) |
|
描述:计算两个roaringbitmap并集后的结果。
返回值类型:roaringbitmap
示例:
1 2 3 4 5 |
SELECT rb_to_array(rb_build('{2,3}') | rb_build('{1,2,3}')); rb_to_array ------------- {1,2,3} (1 row) |
|
描述:计算一个roaringbitmap增加一个ID后的结果。
返回值类型:roaringbitmap
示例:
1 2 3 4 5 |
SELECT rb_to_array(rb_build('{2,3}') | 4); rb_to_array ------------- {2,3,4} (1 row) |
#
描述:两个roaringbitmap进行异或后的结果。
返回值类型:roaringbitmap
示例:
1 2 3 4 5 |
SELECT rb_to_array(rb_build('{2,3}') # rb_build('{1,2,3}')); rb_to_array ------------- {1} (1 row) |
-
描述:计算属于第一个roaringbitmap,但是不属于第二个roaringbitmap的结果集。
返回值类型:roaringbitmap
示例:
1 2 3 4 5 |
SELECT rb_to_array(rb_build('{2,3,4}') - rb_build('{1,2,3}')); rb_to_array ------------- {4} (1 row) |
-
描述:从roaringbitmap中去掉一个指定ID后的结果集。
返回值类型:roaringbitmap
示例:
1 2 3 4 5 |
SELECT rb_to_array(rb_build('{2,3,4}') - 3); rb_to_array ------------- {2,4} (1 row) |
@>
描述:操作符前面的roaringbitmap是否包含后面的roaringbitmap。
返回值类型:bool
示例:
1 2 3 4 5 6 7 8 9 10 |
SELECT rb_build('{2,3,4}') @> rb_build('{2,3}'); ?column? ---------- t (1 row) SELECT rb_build('{2,3,4}') @> 4; ?column? ---------- t (1 row) |
<@
描述:操作符前面的roaringbitmap是否被后面的roaringbitmap包含。
返回值类型:bool
示例:
1 2 3 4 5 6 7 8 9 10 |
SELECT 4 <@ rb_build('{2,3,4}'); ?column? ---------- t (1 row) SELECT rb_build('{2,3,4}') <@ rb_build('{2,3}'); ?column? ---------- f (1 row) |
&&
描述:两个roaringbitmap如果有交集返回true,否则返回false。
返回值类型:bool
示例:
1 2 3 4 5 6 7 8 9 10 |
SELECT rb_build('{2,3,4}') && rb_build('{2,3}'); ?column? ---------- t (1 row) SELECT rb_build('{2,3,4}') && rb_build('{7,8,9}'); ?column? ---------- f (1 row) |