为您提供数据库设计/性能专家。

如果您有一个用于跟踪会计年度期间财务数据的数据库,那么执行日期范围类型搜索(例如,X和Y之间的PaymentDate)是否更好/性能更高/更清晰,或者保留带有以下内容的基于键的表更好?其中定义的会计年度期间,并用付款日期和该关键字标记付款表,因此where子句是FiscalPeriodID = X?

我确定对于较小的数据集没有关系,但让我们假设此数据将在数百万行中。

最佳答案

我每天要处理数百万行的仓库,我们发现智能日期键是必经之路。格式为YYYYMMDD。因此,要查找2008年全年,您可以:

select
    *
from
    gl
where
    postdate between 20080101 and 20081231


使用索引列,这甚至可以跨越十亿行,而且速度惊人。这也指向一个日期表,因此我们可以添加星期几,月份名称或有关加入该日期的任何其他信息。

当然,这些仓库通常是为支持SSAS多维数据集(OLAP数据库)而构建的,因此日期表成为我们的日期维度。加入int的时间要比日期时间快得多。

10-07 13:12
查看更多