对于大型数据集的查询,日期类型是不是比日期时间更高效?

Posted

技术标签:

【中文标题】对于大型数据集的查询,日期类型是不是比日期时间更高效?【英文标题】:Is date type more performant than datetime for queries on large datasets?对于大型数据集的查询,日期类型是否比日期时间更高效? 【发布时间】:2016-03-19 18:33:32 【问题描述】:

我正在存储日历事件日期,包括重复事件。桌子可能会变得很大。我的大多数查询都是针对一个月的范围(即 eventstart >= '1/1/2001' 和 eventstop

如果我查询日期列和日期时间列,我会在范围查询中获得更好的性能吗?

【问题讨论】:

我不知道,但我会说是的,因为与 datetime 的 8 个字节相比,它只有 3 个字节。只是为了记录,你还有smalldatetime,它是 4 个字节,这可能是一个更公平的比较。 此外,您的查询将变得更加正确。在您的示例中,where eventstart >= '1/1/2001' and eventstop <= '1/31/2001'datetime 类型您可能会错过 1 月 31 日上午 10 点的事件,例如,因为您的范围仅在 1 月 31 日早上的午夜前结束。如果它是 date 列,您的查询将始终选择一月份的任何事件。因此,如果您不需要存储时间,date 类型除了速度和存储要求更小之外还有其他优势。 @Andrew,smalldatetime 不是 ANSI 标准,建议不要使用它。 msdn.microsoft.com/en-us/library/ms182418.aspx 正确定义的索引将比datetimedate 为您提供更多帮助 【参考方案1】:

规则 1) 始终使用能够容纳最大可能值的最小数据大小。

http://www.sql-server-performance.com/2007/datatypes/

【讨论】:

微软建议不要再使用 smalldatetime。 msdn.microsoft.com/en-us/library/ms182418.aspx 另外,问题是日期或日期时间。除了你,没有人提到小约会时间。但是,嘿,谢谢你的反对票。 抱歉,误会了。 如果你接受我的编辑或者你自己编辑,我会恢复它。 先生,不要误会我的意思。网站不允许我还原 dv,它说在有人编辑答案之前我无法还原。请编辑答案,我会将其还原。

以上是关于对于大型数据集的查询,日期类型是不是比日期时间更高效?的主要内容,如果未能解决你的问题,请参考以下文章

ndb.query.count() 失败,大型实体的查询截止日期为 60 秒

相同数据集的日期范围

有条件地匹配两个大型数据集的多列中的元素

查找大型数据集中的两个日期之间是不是有假期?

如何提高大型表上基于日期的查询性能?

查询根据发布日期过滤订单?