Sql snowflake中不同表合并方法的性能

Sql snowflake中不同表合并方法的性能,sql,merge,snowflake-cloud-data-platform,Sql,Merge,Snowflake Cloud Data Platform,表a有id、状态 id status name 1 cancel test 表b包含id、状态、度量值1、度量值2 id status metric1 metric2 1 home 1 6 2 home 5 8 3 home 7 3 我想形成一个表c,每当有 内部联接a.id=b.id和a.status='cancel' 然后表c将有从a到b的内部联接结果,在本例中,表b中的id 1与a匹配,我想在c中输出b的

表a有id、状态

id status    name
 1  cancel    test
表b包含id、状态、度量值1、度量值2

id status metric1 metric2
 1  home     1      6
 2  home     5      8
 3  home     7      3
我想形成一个表c,每当有

内部联接a.id=b.id和a.status='cancel'

然后表c将有从a到b的内部联接结果,在本例中,表b中的id 1与a匹配,我想在c中输出b的行,但状态更改为“取消”,并插入另一条记录以更新metric1、metric2。 表c中的最终结果为:

id status metric1 metric2
 1  cancel     1      6
 1  cancel     0      0
我当前的查询:

select a.id, a.status, b.metric1, b.metric2
from a on a.id = b.id 
and a.status='cancel'
union all
select a.id, a.status, 0, 0
from a on a.id = b.id 
and a.status='cancel'
我试图找出是否有更好的方法,甚至在b上使用merge,而不是创建表c

merge into b
  using a on a.id = b.id
  when matched then update 
  set b.status = a.status
  when matched then insert
  (b.id, a.status, 0, 0)
哪种方法性能更好?还有其他建议吗


谢谢

如果合并到B中,而不是创建一个新表C,那么在示例中合并后,您希望B是什么样子?如果合并到B中,而不是创建一个新表C,那么在示例中合并后,您希望B是什么样子?