我们有一张大桌子,我们需要对它进行深度复制。 由于我们没有足够的空磁盘空间来在一个语句中使用它,我试图批量生成它。 但批次似乎运行得非常慢。
我正在运行这样的事情:
INSERT INTO new_table
SELECT * FROM old_table
WHERE creation_date between '2018-01-01' AND '2018-02-01'
即使查询返回少量行~1K
SELECT * FROM old_table
WHERE creation_date between '2018-01-01' AND '2018-02-01'
INSERT
查询大约需要50分钟才能完成。
old_table
有~286M行和~400列
creation_date
是SORTKEY
s
解释计划如下:
XN Seq Scan on old_table (cost=0.00..4543811.52 rows=178152 width=136883)
Filter: ((creation_date <= '2018-02-01'::date) AND (creation_date >= '2018 01-01'::date))
我的问题是:
INSERT
查询这个问题的原因可能是什么?答案 0 :(得分:2)
在我看来,以下是两种可能性 - 但如果你能在你的问题中添加更多细节就会很棒。
creation_date
sortkey吗?old_table
进行了大量更新,如果是,您必须先清空VACUUM DELETE Only old_table
,然后选择查询。其他选择,您可能是S3方式,但不确定是否要这样做。