选择的计算日期时间 - 拆分或连接?

时间:2013-10-15 13:49:07

标签: sql sql-server sql-server-2008 tsql

我正在为应用程序设计数据库布局,这将大量使用基于时间的查询。我想弄清楚哪个是DB布局的最佳选择。我控制插入/更新过程,但数据将反馈到各种Excel电子表格中,消费者将变得足够多,以至于期望能够在客户端做很多事情并不真实。任何字段都可以用于WHERE或ORDER BY。我的选择是:

  1. 存储的日期时间字段,以及单独计算的日期/时间字段
  2. 存储的时间和日期字段以及计算的日期时间字段
  3. 无计算字段 - 在INSERT / UPDATE时间单独存储所有3个字段
  4. 计算字段而不是重复数据和风险不一致似乎更合理,这使我决定是分割日期时间,还是连接单独的字段以获得所需的计算字段。

    我的直觉告诉我,连接应该比分裂更有效,但它真的有多少吗?

1 个答案:

答案 0 :(得分:1)

存储日期时间字段并从中计算日期和时间部分的选项1应该没问题。

我总是希望物理上存储的数据更少。

如果计算过于复杂,无论你的速度减慢,你可能会考虑将其设为PERSISTED COMPUTED COLUMN,这在选项1和选项3之间是一种妥协。 (除非您不必手动插入)

有关持久计算列的详细信息,请参阅此link中的第3点。