2013-01-14 40 views
0

在設計一個基於日期(例如貨幣匯率)的影響較大的表時,哪一個更好?最大和大於SQL之間的性能差異

  1. 生效日期(找出MAX(生效日期),並獲得當前值)
  2. 從日期 - 要日期條件(大於等於SYSDATE)

Rgrds。

+0

你正在使用什麼DBMS?請重新提出您的問題 –

+0

正在使用Oracle 10g – abp

+0

如果您提供表格和查詢1和2的結構,將會更容易爲您提供幫助。 –

回答

1

這取決於。您有一個表格來表示對特定實體的更改,並且您希望記錄實體更改的時間以及何時更改被後續更改所取代。

1.如果您只記錄每個事件的生效日期,INSERT更簡單:他們不需要找到更早的記錄來更新它。但是,查詢變得更加複雜 - 您需要在數據集上運行一個窗口,以查找哪個記錄適用於任何時間,這可能導致性能較差。

另一個缺點是,這種模式是開放式的;您不能將貨幣記錄爲「永久關閉」(如果您有結束日期,您可以這樣做)。

2.如果您記錄每個事件的開始日期和結束日期,查詢更簡單:您只需分別查看每行,以確定它是否爲任何時間點的「當前」。然而,INSERTs稍微複雜一點 - 當你插入一個新的事件時,你必須更新之前的事件來標記它的結束日期。

該模型是封閉式的;您可以在最後的活動中輸入結束日期,並且沒有「公開」記錄。

相關問題