首页 > 解决方案 > 计算列或触发器?MS SQL Server 中的表设计

问题描述

尝试在两种选择之间确定最佳表结构:

VALUE 列

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

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

大桌子?预计服务器寿命不会超过 3-4 百万条记录,可能每月 50K,5 年的数据。

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

标签: sql-servertsqldatabase-design

解决方案


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

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

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


推荐阅读