雪花中合并表的不同方法的性能

时间:2020-05-21 18:32:07

标签: sql merge snowflake-cloud-data-platform

表a具有ID,状态; <​​/ p>

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 ='取消'

然后表c将具有从a到b的内部联接结果,在此示例中,表b中的id 1与a匹配,我想在c中将状态更改为'cancel'的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)

哪种方法性能更好?还有其他建议吗?

谢谢!

0 个答案:

没有答案