我想将一些数据从一个表移动到另一个表(可能具有不同的模式)。即进入头脑简单的解决办法是 -将数据从一个表移动到另一个表,postgresql版
start a transaction with serializable isolation level;
INSERT INTO dest_table SELECT data FROM orig_table,other-tables WHERE <condition>;
DELETE FROM orig_table USING other-tables WHERE <condition>;
COMMIT;
现在,如果数据量是相当大的,而且<condition>
是计算昂贵?在PostgreSQL中,可以使用RULE或存储过程来即时删除数据,只评估一次条件。哪种解决方案更好?还有其他选择吗?
我做了一些测试处理使用触发器的大量数据,逐行,以及使用单个事务的存储过程。 存储过程方法更快。 – pcent 2010-06-04 12:45:49
您还应该优化您的PostgreSQL服务器以提高性能。阅读: http://wiki.postgresql.org/wiki/Performance_Optimization – pcent 2010-06-04 12:48:23
嗯,我认为指南应该有资格说,一个COPY比一组INSERT语句更快,每行一个。 INSERT ... SELECT用于复制数据我认为是最优的,因为数据没有被传递到执行程序之外。 – araqnid 2010-06-04 13:12:22