Plsql 在Oracle中刷新表的更快方法

Plsql 在Oracle中刷新表的更快方法,plsql,oracle10g,Plsql,Oracle10g,我在Oracle10g中有一个过程,它将数据从暂存表复制到主表 -- move data to final table DELETE FROM my_table; INSERT INTO my_table SELECT * FROM my_table_s; COMMIT; 这张桌子有大约3米的记录。delete语句非常慢。我可以通过截断来加快速度,但这会在数据不可用的情况下创建一个小的时间窗口 有没有更好的方法来执行这种类型的移动,既可以维护在任何给定时间向任何人查询的数据可用性,又不

我在Oracle10g中有一个过程,它将数据从暂存表复制到主表

-- move data to final table
DELETE FROM my_table;
INSERT INTO my_table
    SELECT * FROM my_table_s;
COMMIT;
这张桌子有大约3米的记录。delete语句非常慢。我可以通过截断来加快速度,但这会在数据不可用的情况下创建一个小的时间窗口


有没有更好的方法来执行这种类型的移动,既可以维护在任何给定时间向任何人查询的数据可用性,又不会使使用这些表对象的任何包无效?

您可能希望查看物化视图:


您可以创建多视图,然后手动刷新它。您可以通过使用物化视图日志使用快速刷新机制来加速刷新机制。

使用物化视图不会将对视图所做的更改推后,无论其类型为可写、只读或其他,因此最好对所需的表执行大容量选择操作,然后执行提交操作