首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >datetime vs bigint

datetime vs bigint
EN

Stack Overflow用户
提问于 2013-01-09 16:34:47
回答 2查看 2.1K关注 0票数 1

我有几个表,必须根据开始和结束日期进行连接,例如...

代码语言:javascript
复制
SELECT    * 
FROM      [t1] 
JOIN      [t2] 
   ON [t2].[start] BETWEEN [t1].[start] AND [t1].[stop] 
   OR [t2].[stop]  BETWEEN [t1].[start] AND [t1].[stop]
   OR [t2].[start] < [t1].[start] and [t2].[stop] > [t1].[stop]

这些表可能在数百万行中。

我可以选择将开始/停止存储为datetime2和/或bigint(从纪元开始的纳秒)。考虑到这个选项-如果索引的话使用bigint会有性能提升吗?

任何一种方法都有优缺点吗?

我预计整数方法会更快-

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-10 13:33:52

使用datetime2。除了“更容易被人类阅读”之外,更容易被人类编程。如果不使用date类型来表示日期,那么与外部时间(例如getdate() )相比,您将在计算时间间隔、连接到其他表等方面遇到问题。

就效率而言,为了便于比较,服务器几乎肯定会将所有date类型视为整数。唯一的速度优势可能对您开放,取决于您是否通常关心秒,将是集群在smalldatetime上,因为它是4个字节。您仍然可以将高分辨率部分保留为单独的real

票数 4
EN

Stack Overflow用户

发布于 2013-01-09 16:50:16

只要使用datetime2类型,就可能没有区别,因为两种类型在大小上相似(datetime2 -- 6到8字节,bigint -- 8字节)。

我假设IO成本将是唯一的瓶颈,因此它取决于您比较了多少记录(要读取的记录)以及索引将如何存储datetime2类型。

我会在你的例子中测试和比较这两个选项,并选择更好的一个,记住datetime更容易被人类阅读。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14231119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档