日期时间列与日期 + 时间列

Zap*_*ica 5 sql-server t-sql sql-server-2012 datetime date

我正在为一个保存大量日志的系统设计一个表。我们正在查看每秒大约 200 个条目。

我们使用的是 SQL-Server 2012 企业版。

我有一个关于将一Datetime列分成两列的问题,Date并且Time.

我在问题背后的想法。我会说一旦数据存储在数据库中,大多数搜索将基于每天,给我今天/1 月 10 日的所有结果。

现在我仍然需要存储时间。因此,如果我将其存储为datetime,则在执行此查询时,sql 将不得不加载整个datetime字段,然后只查看一半的数据。

因此,通过可能将日期存储在其自己的字段中,它可以只查看它需要的内容。

但另一方面,如果您确实在查询中指定了时间,则它现在必须检查两列的值。

因此,我希望 SQL Gurus 提供关于哪个选项对大型数据库的查询具有更好的性能的输入。

据我所知datetime,可以高度优化并且是比分解更好的解决方案。

Bla*_*ler 1

我建议两列:DATEDATETIME2(p),将精度设置p为支持要求和优化存储所需的最小值。然后对它们进行适当的索引(可能与其他列结合)以支持您的查询。

如果您的大多数查询仅使用日期,那么为其设置一个单独的列并使用适当的索引来支持查询是有意义的。一种选择是使日期列成为PERSISTED 计算列(根据 datetime2 列计算)。有关对计算列进行索引的详细信息,请参阅此 BOL 链接

  • 不确定我是否理解仅附加日期栏会给您带来什么。我始终可以使用 datetime_column >= 'yyyymmd1' AND datetime_column < 'yyyymmd2' 获取特定日期的数据。为什么要为包含冗余信息的额外列支付存储和索引维护成本? (3认同)