更新时间:2024-12-06 GMT+08:00
分享

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)

相关文档