【问题标题】:Calculated columns or triggers? table design in MS SQL Server计算列或触发器? MS SQL Server 中的表设计
【发布时间】:2021-07-26 19:06:03
【问题描述】:

试图在两种选择之间决定最佳的表结构:

VALUE 列

  1. 添加一个持久的计算列,它是两列之间的差异 或
  2. 添加触发器以在加载时填充固定列

第二列也是如此。 . nchar(1) 具有非聚集索引的 Y/N 值

大桌子?在预期的服务器生命周期内,实际上不会超过 3-4 百万条记录,可能每月 50K,5 年的数据。

我倾向于使用触发器,因为表每月只加载一次,固定资产,但只是对其他人的维护经验感兴趣,而不是查看查询检索速度,还是我在设计上考虑过度了?

【问题讨论】:

  • “最佳”需要指标。您是否试图最小化存储空间?提高特定组查询的性能?优化insert语句的性能?从阅读this开始。
  • 答案是经过测试的计算列,较少的维护和速度是无关紧要的。 . .感谢@HABO

标签: sql-server tsql database-design


【解决方案1】:

我建议使用计算列。为什么? 可维护性

下一个编写您的代码的人更容易理解。当他们查看您的表定义时,他们可以看到您的逻辑。如果您使用触发器,他们必须知道触发器在那里才能理解您的逻辑。可悲的是,很多数据库维护都是在零时三十分的恐慌中进行的。清晰很有帮助。

您可以毫无问题地在持久计算列上放置索引。因此,像往常一样,有效地处理查询是创建适当索引的问题。当您右键单击并选中“显示实际执行计划”时,SSMS 会建议索引。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-22
    • 1970-01-01
    • 2016-08-09
    • 2011-05-04
    相关资源
    最近更新 更多