0
我有一个数据仓库中的两个表:balances
和dates
。 Balances
具有以下结构:使用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
列吗?
的'balances'表的关键是'代理键日期+帐户number',它不允许重复。我需要'Surrogate Key Date'来运行OLAP,而'Date'列来运行报告(因为'Surrogate Key Date'对构建报告的最终用户没有任何意义) – ps0604
我明白了 - 好吧,在这种情况下,首先使用代理键没有任何好处。根据'DATE'和'Account number'创建一个复合主键并使用它。 HANA将在内部为该连接创建一个隐藏列,并且复合键的所有处理都将在该列上完成。显而易见的主要缺点是额外的空间要求,但您也可以使用代理键。 –