在日期维度中使用自然键
Use of natural key in date dimension
我非常努力地理解在日期维度 table 中使用自然键的概念。
我一直看到在维度 table 中创建了一个随机代理键。但我最近读到,在日期维度中使用自然键,例如 20150806
for Aug-06-2015
效果更好,并且在查找和反向查找时具有相当大的性能提升
事实上 tables 与自然代理键 int
相比。
我不明白它如何带来任何性能提升。即使我们将这个花哨的键用于日期维度,我们仍然需要 join
在事实和维度之间。
如果有人对此有任何见解,请介意分享知识。如果你能跟进一个例子,我将不胜感激。
没有性能提升 -- 键只是日期记录的任意标识符。在商业应用程序中,我通常使用从 2000 年 1 月 1 日开始的日期偏移量作为 smallint。使用较小的整数有一些优势,因为日期键存在于如此多的记录中,它有助于减小记录大小(因此增加可缓存记录的数量)。
对日期使用 "natural" 键值的唯一真正好处是 table 可以在不必加入日期维度 table 的情况下使用或浏览,并且具有可见一些"lexical"的意思。
但它在数据仓库的上下文中根本没有帮助。
我非常努力地理解在日期维度 table 中使用自然键的概念。
我一直看到在维度 table 中创建了一个随机代理键。但我最近读到,在日期维度中使用自然键,例如 20150806
for Aug-06-2015
效果更好,并且在查找和反向查找时具有相当大的性能提升
事实上 tables 与自然代理键 int
相比。
我不明白它如何带来任何性能提升。即使我们将这个花哨的键用于日期维度,我们仍然需要 join
在事实和维度之间。
如果有人对此有任何见解,请介意分享知识。如果你能跟进一个例子,我将不胜感激。
没有性能提升 -- 键只是日期记录的任意标识符。在商业应用程序中,我通常使用从 2000 年 1 月 1 日开始的日期偏移量作为 smallint。使用较小的整数有一些优势,因为日期键存在于如此多的记录中,它有助于减小记录大小(因此增加可缓存记录的数量)。
对日期使用 "natural" 键值的唯一真正好处是 table 可以在不必加入日期维度 table 的情况下使用或浏览,并且具有可见一些"lexical"的意思。
但它在数据仓库的上下文中根本没有帮助。