2017-05-07 32 views
0

我有一個數據倉庫中的兩個表:balancesdatesBalances具有以下結構:使用INT與DATE在where子句

Surrogate Key Date | Date  | Account | Balance 
1     | 2017-02-01 | 100  | 1234 
1     | 2017-02-01 | 200  | 5151 
2     | 2017-02-02 | 100  | 5123 
2     | 2017-02-02 | 200  | 8234 

而且dates具有以下結構:

Surrogate Key Date | Date  | Weekday | Week in Year | ... other columns 
1     | 2017-02-01 | Wed  | 5   | 
2     | 2017-02-02 | Thu  | 5   | 

Surrogate Key Date列是int類型,並且Date列是兩個表中類型DATE。

balances表中的代理鍵在OLAP查詢使用,以及日期用於定期報告。

現在,我需要開發集中使用的數據庫(它是一個批處理過程)一個程序,它需要通過日期列重複訪問的平衡表。我應該在這個過程中使用Surrogate Key Date列或Date列嗎?我需要按日期過濾。 Where子句中的INT訪問比DATE訪問更有效嗎?不使用OLAP時,我應該忽略Surrogate Key Date列嗎?

回答

1

從性能上看,它可能並不重要,在所有的SAP HANA。一般來說,HANA在計算連接和結果集時使用實際的數據類型,但使用內部引用標識。

實際上,當它將1:1映射到Date列時,我並沒有看到有第一個代理鍵的原因。另外,由於它似乎允許重複,它根本不是關鍵。不知道,您應該如何解決此模型中同一日期的特定記錄。

+0

的'balances'表的關鍵是'代理鍵日期+帳戶number',它不允許重複。我需要'Surrogate Key Date'來運行OLAP,而'Date'列來運行報告(因爲'Surrogate Key Date'對構建報告的最終用戶沒有任何意義) – ps0604

+0

我明白了 - 好吧,在這種情況下,首先使用代理鍵沒有任何好處。根據'DATE'和'Account number'創建一個複合主鍵並使用它。 HANA將在內部爲該連接創建一個隱藏列,並且複合鍵的所有處理都將在該列上完成。顯而易見的主要缺點是額外的空間要求,但您也可以使用代理鍵。 –