在日期维度中使用自然键

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"的意思。

但它在数据仓库的上下文中根本没有帮助。