【问题标题】:Faster way to refresh a table in Oracle在 Oracle 中刷新表的更快方法
【发布时间】:2014-09-25 15:56:25
【问题描述】:

我在 Oracle 10g 中有一个将数据从临时表复制到主表的过程。

-- move data to final table
DELETE FROM my_table;
INSERT INTO my_table
    SELECT * FROM my_table_s;
COMMIT;

此表有约 3M 条记录。删除语句很慢。我可以使用 TRUNCATE 加快它的速度,但这会造成数据不可用的小时间窗口。

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

【问题讨论】:

    标签: plsql oracle10g


    【解决方案1】:

    您可能想查看物化视图: http://docs.oracle.com/cd/E11882_01/server.112/e10706/repmview.htm

    您可以创建一个 MView,然后手动刷新它。您可以使用 FAST REFRESH 机制(使用物化视图日志)加快刷新机制。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2021-11-15
        • 1970-01-01
        • 2017-03-14
        • 1970-01-01
        • 2012-01-23
        • 1970-01-01
        • 2020-03-11
        • 1970-01-01
        • 2021-07-21
        相关资源
        最近更新 更多