1

好的,现在让我举个例子

日期 :15.12.2012 00:16:39

现在这将存储为

20121215001639

现在例如,如果我想检索早于 30 分钟(30*60=1800 秒)的行

我可以这样做

where date<20121215001639+1800 

那么这将是一种性能方式而不是存储为日期时间吗?

4

1 回答 1

10

我完全同意 marc_s 上面的评论,但我决定做一个测试,只是为了好玩。

我创建了两张表,一张有datetime列,一张有bigint列,代表相同的数据。

这是 sql 小提琴:http ://www.sqlfiddle.com/#!3/74976/3

我已经针对 500、1000 和 5000 条记录运行此查询,并且每次都注意到执行计划是相同的,因此从性能的角度来看,使用bigint.

但是,这种方法有明显的缺点bigint。他们中有一些:

  • 到/从的转换bigint需要编写更多代码
  • 按月过滤等操作需要更复杂/可读性更低的查询
  • 查看 Management Studio 中的结果网格,如果您看到分隔的日期部分,则无法尽可能快地“解析”/解释结果。
于 2012-12-16T14:35:35.097 回答