我在Oracle 10g中有一个过程,它将数据从登台表复制到主表。
-- move data to final table
DELETE FROM my_table;
INSERT INTO my_table
SELECT * FROM my_table_s;
COMMIT;
此表有~3M记录。删除语句非常慢。我可以使用TRUNCATE加速它,但这会创建一个小数据不可用的时间窗口。
是否有更好的方法来执行此类移动,既可以在任何给定时间维护任何可能查询的数据,也不会使使用这些表对象使任何程序包无效?
答案 0 :(得分:0)
您可能希望查看物化视图: http://docs.oracle.com/cd/E11882_01/server.112/e10706/repmview.htm
您可以创建MView,然后手动刷新。您可以使用FAST REFRESH机制(使用物化视图日志)加快刷新机制。
答案 1 :(得分:-1)
使用实体化视图不会将对视图的更改回退,无论其类型为可写,只读还是其他类型,因此最好在所需表上执行批量选择操作并执行提交操作。