max和大于SQL的性能差异

时间:2013-01-14 09:35:42

标签: sql oracle date oracle10g aggregate

在设计一个基于日期(例如货币汇率)产生影响的表时哪一个更好?

  1. 生效日期(找出最大值(生效日期)并获取当前值)
  2. 从日期 - 到日期条件(大于等于sysdate)
  3. Rgrds。

1 个答案:

答案 0 :(得分:1)

这取决于。您有一个表格,表示对特定实体的更改,并且您希望记录实体更改的时间,以及更改何时被后续更改替换。

1。如果您只记录每个事件的生效日期,则INSERT更简单:它们不需要找到更新它的早期记录。但是,查询变得更加复杂 - 您需要在数据集上运行一个窗口,以便在任何时候找到适用的记录,从而可能导致性能下降。

另一个缺点是这个模型是开放式的;您不能将货币记录为“永久关闭”(如果您有结束日期,则可以执行此操作)。

2. 如果您记录每个事件的开始日期和结束日期,查询会更简单:您只需要单独查看每一行,以了解它是否是“当前”的任何一点。时间与否。但是,INSERT稍微复杂一些 - 当您插入新事件时,您必须更新之前的事件以标记其结束日期。

这个模型是封闭式的;你可以在最后的赛事上加上结束日期,但没有“公开”记录。