【发布时间】:2011-07-19 08:52:18
【问题描述】:
在 Oracle 中构建数据仓库时,首选 varchar2 而非日期数据类型是否有任何区别。我的数据仓库并不完全是仓库,因为不需要日期维度(不需要日期层次结构)并且将日期保存为纯“MM-DD-YYYY”格式的字符串就足够了。不过要使用哪种数据类型?
【问题讨论】:
标签: oracle data-warehouse
在 Oracle 中构建数据仓库时,首选 varchar2 而非日期数据类型是否有任何区别。我的数据仓库并不完全是仓库,因为不需要日期维度(不需要日期层次结构)并且将日期保存为纯“MM-DD-YYYY”格式的字符串就足够了。不过要使用哪种数据类型?
【问题讨论】:
标签: oracle data-warehouse
让我们做一点成本/收益分析,好吗?
VARCHAR2
MM-DD-YYYY 格式显示)。TO_DATE 调用而增加TO_CHAR(TO_DATE(date_column, 'MM-DD-YYYY'), 'DD-MON-YYYY')),则需要额外计算TO_DATE,则会增加失败的风险。DATE
TO_DATE 开销的情况下进行搜索
希望这将从技术的角度帮助您做出特定的决定。总是有商业(或办公室政治)视角:
日期维度不是必需的
我会为你解决这个问题:
日期维度不是必需的还
假设您将该列保留为VARCHAR2,并且客户出现并要求过滤有关此日期字段的一些报告。假设这正在杀死数据库服务器,您最终需要将其转换为DATE。在贵公司的生产环境中进行这种更改相对容易吗?是否有大量繁文缛节、表格和变更控制板,您必须努力进行简单的变更?如果您确实设法克服了这些障碍,您确定所有日期都以相同的格式存储吗?
【讨论】:
这里的“足够”是什么意思?我可以看到不使用 DATE 会失去什么,但你会得到什么让这值得考虑?当然,如果你持有一个日期值,在某些时候你会想要使用它,例如“2011 年 3 月的销售额”还是什么?
【讨论】:
应避免使用 varchar2,因为它占用空间,为什么要使用占用空间比不占用空间大得多的数据类型?
现在磁盘存储空间可能不是什么大问题,但它可以节省一些 RAM 空间,防止磁盘 I/O,尤其是在频繁访问包含这些日期的记录时。
如果在检索记录时需要磁盘 I/O,它会稍微快一些,因为使用 date 与 varchar2 时大小更小。
【讨论】: