我想将一些数据从一个表移动到另一个表(可能有不同的模式).想到的直接解决方案是 -
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;
Run Code Online (Sandbox Code Playgroud)
现在如果数据量相当大并且<condition>计算成本昂贵怎么办?在PostgreSQL中,RULE或存储过程可用于动态删除数据,仅评估条件一次.哪种解决方案更好?还有其他选择吗?