将数据从相关表复制到另一个相关表的最佳方法是什么?

时间:2011-08-16 16:50:15

标签: sql postgresql

将数据从相关表复制到具有相同模式的另一个相关表的最佳方法是什么。表与一对多关系相关联。

考虑以下架构

firm

id | name | city.id (FK)

employee

id | lastname | firm.id (FK)

firm2

id | name | city_id (FK)

employee2

id | lastname |firm2.id (FK)

我想要做的是将firm的行与特定的city.id复制到firm2,并将他们的employees与公司employee2相关联。

我使用posgresql 9.0所以我必须调用SELECT nextval('seq_name')来获取表的新ID。

现在我执行此查询只是迭代Java后端服务器中的所有行,但是对于大量数据(50 000名员工和2000家公司),需要花费太多时间(1-3分钟)。

我想知道是否有另一种更棘手的方法,例如选择数据到临时表?或者可能使用存储过程并使用cursror迭代行以避免在我的后端服务器上缓冲?

1 个答案:

答案 0 :(得分:1)

这是一个问题,只需使用序列或标识值作为表中唯一的主键即可。

如果存在真实的唯一索引/主键,那么您可以加入该键。另一种选择是在用序列填充表时创建映射表,然后通过连接映射表插入到子表的FK中。它并没有完全消除循环的需要,但至少有一些插入被移出到基于集合的方法中。