【发布时间】:2021-05-21 11:08:55
【问题描述】:
我正在尝试使用 plpgsql 创建 Postgres 表的克隆。 迄今为止,我一直只是截断表 2 并重新插入表 1 中的数据。
TRUNCATE TABLE "dbPlan"."tb_plan_next";
INSERT INTO "dbPlan"."tb_plan_next" SELECT * FROM "dbPlan"."tb_plan";
作为代码,这按预期工作,但是“dbPlan”.“tb_plan”包含大约 300 万条记录,因此在大约 20 分钟内完成。这太长了,会对其他进程产生连锁反应。
将所有约束、索引和数据准确复制到表 2 中非常重要。
我曾尝试删除表并重新创建它,但这并没有提高速度。
DROP TABLE IF EXISTS "dbPlan"."tb_plan_next";
CREATE TABLE "dbPlan"."tb_plan_next" (LIKE "dbPlan"."tb_plan" INCLUDING ALL);
INSERT INTO "dbPlan"."tb_plan_next" SELECT * FROM "dbPlan"."tb_plan";
有没有更好的方法来实现这一点?
我正在考虑创建表,然后作为第二步创建索引。
【问题讨论】:
标签: postgresql performance clone