我想在SnappyData中的两个表上进行共同连接,并且为了进一步加速连接,如果我还在两个表的连接列上创建索引,它会有帮助吗?
更具体地说,这两个表会非常大,如果在大规模上它是成对的分区连接,那么它对我来说是理想的,并且在每对分区中,索引嵌套循环连接可以用来代替天真的嵌套循环连接。
我无法为此找到示例或教程,我们将非常感谢任何解释或指示。
提前致谢!
更新
这两个表在#rows方面很大,而且表的列很少(3-4列,所有整数类型):
`Table1(Col_A, Col_B), Table2(Col_B, Col_C)`,
我想
加入Table1
&在Table2
上Col_B
获取
Table3(Col_A, Col_B, Col_C),
因此我更喜欢在连接列Col_B
上水平分区(使用行表)两个连接表,而不是使用列表。并使用共存联接来减少数据混乱。
即使在分区之后,分区可能仍然太大,因此我想知道是否可以在Col_B
上独立地在每个分区中创建索引并将其用于索引连接?在我看来,在SnappyData中,我只能在整个列上创建索引,而不是独立地为每个分区创建索引。
答案 0 :(得分:0)
你说数据很大。所以,最好使用列表。
您是否尝试使用partition by/colocateWith
子句创建表格?
实施例:
表1:create table T1 (a1, a2, ...) using column partition_by 'a1'
表2:create table T2 (a1, ax, ay ...) using column partition by 'a1' colocate_with 'T1'
然后,尝试查询并在UI中查看SQL物理计划(联接不应涉及随机播放)。让我们知道怎么回事。