主表:
CREATE TABLE ca_ger.cln_trans_base (
store_code VARCHAR(25),
year_week varchar(25),
division VARCHAR(25) encode lzo,
market_share_code VARCHAR(25) encode bytedict,
pon VARCHAR(25) encode lzo,
osp_price REAL encode bytedict
)
diststyle key distkey(store_code)
sortkey(store_code,year_week);
COMMIT;
第二张表:
CREATE TABLE ca_ger.divisions(
store_code VARCHAR(25),
year_week varchar(25),
division VARCHAR(25) encode lzo
)
diststyle key distkey(store_code)
sortkey(store_code,year_week);
COMMIT;
alter table ca_ger.cln_Trans_base
add column division(varchar 25);
加入条款:
update ca_ger.cln_trans_base
set division=b.division
from ca_Ger.cln_trans_base a
join divisions b on a.year_week=b.year_week;
此后,我运行了vacuum
和analyze
。之后,我检查了统计信息表,并将行加倍。
答案 0 :(得分:1)
扩展@a_horse的建议,UPDATE语句不应重复要更新的表。而是使用:
UPDATE ca_ger.cln_trans_base a
SET division = b.division
FROM divisions b
WHERE a.year_week = b.year_week;
答案 1 :(得分:0)
在Amazon Redshift中,
Update = DELETE + INSERT
因此您的行大小增加了一倍。因为您可能正在更新所有行。
在每次更新后或按计划进行,您应该按照注释之一的建议进行full Vaccum
。
VACUUM FULL cln_trans_base
它将尺寸减小一半。 希望对您有帮助。