在 where 子句中使用 INT 与 DATE
Use INT vs. DATE in where clause
我在数据仓库中有两个 table:balances
和 dates
。 Balances
具有以下结构:
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
列在两个 table 中都是 DATE 类型。
balances
table中的代理键用于OLAP查询,日期用于常规报表。
现在,我需要开发一个密集使用数据库的程序(它是一个批处理程序),它需要通过日期列重复访问余额table。我应该在此过程中使用代理键日期列还是日期列?我需要按日期过滤。 where 子句中的 INT 访问是否比 DATE 访问更有效?不使用 OLAP 时是否应该忽略 Surrogate Key Date
列?
从性能的角度来看,这在 SAP HANA 上可能根本无关紧要。一般而言,HANA 在计算连接和结果集时不对实际数据类型起作用,而是对内部引用 ID 起作用。
实际上,当代理键将 1:1 映射到 Date
列时,我根本看不出有什么理由首先使用代理键。此外,因为它似乎允许重复,所以它根本不是关键。不确定,您应该如何处理此模型中同一日期的特定记录。
我在数据仓库中有两个 table:balances
和 dates
。 Balances
具有以下结构:
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
列在两个 table 中都是 DATE 类型。
balances
table中的代理键用于OLAP查询,日期用于常规报表。
现在,我需要开发一个密集使用数据库的程序(它是一个批处理程序),它需要通过日期列重复访问余额table。我应该在此过程中使用代理键日期列还是日期列?我需要按日期过滤。 where 子句中的 INT 访问是否比 DATE 访问更有效?不使用 OLAP 时是否应该忽略 Surrogate Key Date
列?
从性能的角度来看,这在 SAP HANA 上可能根本无关紧要。一般而言,HANA 在计算连接和结果集时不对实际数据类型起作用,而是对内部引用 ID 起作用。
实际上,当代理键将 1:1 映射到 Date
列时,我根本看不出有什么理由首先使用代理键。此外,因为它似乎允许重复,所以它根本不是关键。不确定,您应该如何处理此模型中同一日期的特定记录。