SQL Server Datetime与Int键性能

Eri*_*ric 15 sql-server performance primary-key

对于你的数据库设计/性能专家.

如果您有一个用于跟踪会计年度财务数据的数据库,那么在X和Y之间进行日期类型搜索(例如PaymentDate,或者更好地保留基于int-key的表)是否更好/更高性能/更清晰在其中定义的会计年度期间,并使用付款日期和该密钥标记付款表,因此where子句是FiscalPeriodID = X的位置?

我确信对于较小的数据集而言并不重要,但我们假设这些数据将在数百万行中.

Eri*_*ric 20

我每天处理数百万行的仓库,我们发现智能日期键是可行的方法.格式为YYYYMMDD.所以要找到2008年的所有内容,你会做到:

select
    *
from
    gl
where
    postdate between 20080101 and 20081231
Run Code Online (Sandbox Code Playgroud)

使用索引列,这非常快,甚至超过10亿行.这也指向一个日期表,因此我们可以查看星期几,月份名称或其他有关该联接日期的信息.

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

  • 大卫斯坦写了一篇关于它的文章.他说日期字段在SQL 2008中具有更好的性能.网址:[http://www.made2mentor.com/2011/05/date-vs-integer-datatypes-as-primary-key-for-date-dimensions/] (http://www.made2mentor.com/2011/05/date-vs-integer-datatypes-as-primary-key-for-date-dimensions/) (4认同)