Sql Oracle/RDBMS的增量查询引擎

Sql Oracle/RDBMS的增量查询引擎,sql,oracle,join,etl,Sql,Oracle,Join,Etl,我不确定“增量”这个词是否正确。我将继续说明这个问题 我有两张大桌子,X和Y。 Z是另一个表,它是X和Y的连接 Create Table Z as select X.col1, X.col2, Y.col2, Y.col3 from X join Y on X.id=Y.id" 现在,无论何时更新表X或Y中的任何值,都应该刷新我在Z中的数据。 有两种方法可以做到这一点: 定期显式刷新表Z。 缺点是1)数据未实时更新2)再次运行联接的刷新花费了大量时间,尽管只更改了一个字段 根据X和Y的任

我不确定“增量”这个词是否正确。我将继续说明这个问题

我有两张大桌子,X和Y。 Z是另一个表,它是X和Y的连接

Create Table Z as 
select X.col1, X.col2, Y.col2, Y.col3 
from X 
join Y on X.id=Y.id"
现在,无论何时更新表X或Y中的任何值,都应该刷新我在Z中的数据。 有两种方法可以做到这一点:

  • 定期显式刷新表Z。 缺点是1)数据未实时更新2)再次运行联接的刷新花费了大量时间,尽管只更改了一个字段

  • 根据X和Y的任何变化,在表Z中进行增量更新。 可能的好处是它是实时的,并且不会花费太多时间来更新,因为只会更新相关的行

  • 我正在寻找有关如何为Oracle或任何其他数据库实施2)方法的任何帮助/指导?

    要将Justin和Alex的评论(以及隐含的答案)转化为答案,您可能需要使用物化视图。如果您不熟悉它们,常规视图中的数据实际上并不存在,而只是从视图定义中的表中的数据返回,则物化视图将创建数据的物理表示形式,并且可以通过多种方式刷新物化视图。我将把表
    X
    和表
    Y
    (“基表”)之间的连接称为下面的表
    Z
    ,但
    Z
    可能是表、视图或物化视图:

    正如Alex所提到的,可能有一些原因导致您不想使用物化视图,因此让我提及一些常见的原因

    • 生成的物化视图将占用大量物理磁盘空间;例如,当连接巨大的表
      X
      Y
      时,将创建一个巨大的表
      Z
    • 基本表X和Y经常更新,而表
      Z
      的访问频率不如基本表的更新频率高
    同样,以上都是草率的概括;您需要测试各种选项

    物化视图代替实表
    Z
    或视图
    Z
    的优点包括:

    • 与从基表获取数据的视图相比,对数据的快速访问
    • 物化视图可以根据基于时间的计划进行刷新,也可以在基表上的数据更改时进行刷新,或者根据请求进行刷新。由于包含了标记,因此可以在特定过程或作业运行后刷新物化视图
    • 您可以在基表上创建物化视图日志,以进一步加快物化视图刷新的速度
    • 如果经常查询表
      Z
      ,则物化视图可能比常规视图快
    所以测试几种方法:前两种方法、常规视图和物化视图。如果table
    Z
    不需要基表中的很多列,则常规视图可以工作。如果联接条件产生少量行,则物化视图可能是最好的

    参考资料:

    • 物化视图
    • 物化视图
    要将Justin和Alex的评论(以及隐含的答案)转化为答案,您可能需要使用物化视图。如果您不熟悉它们,常规视图中的数据实际上并不存在,而只是从视图定义中的表中的数据返回,则物化视图将创建数据的物理表示形式,并且可以通过多种方式刷新物化视图。我将把表
    X
    和表
    Y
    (“基表”)之间的连接称为下面的表
    Z
    ,但
    Z
    可能是表、视图或物化视图:

    正如Alex所提到的,可能有一些原因导致您不想使用物化视图,因此让我提及一些常见的原因

    • 生成的物化视图将占用大量物理磁盘空间;例如,当连接巨大的表
      X
      Y
      时,将创建一个巨大的表
      Z
    • 基本表X和Y经常更新,而表
      Z
      的访问频率不如基本表的更新频率高
    同样,以上都是草率的概括;您需要测试各种选项

    物化视图代替实表
    Z
    或视图
    Z
    的优点包括:

    • 与从基表获取数据的视图相比,对数据的快速访问
    • 物化视图可以根据基于时间的计划进行刷新,也可以在基表上的数据更改时进行刷新,或者根据请求进行刷新。由于包含了标记,因此可以在特定过程或作业运行后刷新物化视图
    • 您可以在基表上创建物化视图日志,以进一步加快物化视图刷新的速度
    • 如果经常查询表
      Z
      ,则物化视图可能比常规视图快
    所以测试几种方法:前两种方法、常规视图和物化视图。如果table
    Z
    不需要基表中的很多列,则常规视图可以工作。如果联接条件产生少量行,则物化视图可能是最好的

    参考资料:

    • 物化视图
    • 物化视图

    是否有理由将Z创建为表而不是物化视图?Oracle已经知道如何对物化视图进行增量刷新(假设查询像您显示的那样简单,并且假设您在X和Y上创建物化视图日志)。同意,表Z应该是视图而不是表。不确定它是否应该是一个物化视图,但也许..@justin和alex I“利用”了您的想法来回答…您将Z创建为一个表而不是物化vie有什么原因吗