sql-server - 计算列或触发器?MS SQL Server 中的表设计
问题描述
尝试在两种选择之间确定最佳表结构:
VALUE 列
- 添加一个持久的计算列,它是两列之间的差异或
- 添加触发器以在加载时填充固定列
第二列也一样。. nchar(1) 具有非聚集索引的 Y/N 值
大桌子?预计服务器寿命不会超过 3-4 百万条记录,可能每月 50K,5 年的数据。
我倾向于触发器,因为该表每月仅加载一次,固定资产,但只是对其他人的维护经验与查看查询检索速度感兴趣,还是我过度考虑了设计?
解决方案
我建议使用计算列。为什么?可维护性。
下一个处理您的代码的人更容易理解。当他们查看您的表定义时,他们可以看到您的逻辑。如果您使用触发器,他们必须知道触发器在那里才能理解您的逻辑。可悲的是,很多数据库维护都是在零时三十分的恐慌中进行的。清晰度非常有帮助。
您可以毫无问题地将索引放在持久计算列上。因此,像往常一样,有效地处理查询是创建适当索引的问题。当您右键单击并选中“显示实际执行计划”时,SSMS 会建议索引。
推荐阅读
- clojure - Clojure:将地图向量转换为具有递增键的地图地图
- javascript - 从 JavaScript Ajax 返回 laravel 视图
- arrays - Having trouble with Postgres unnest array syntax
- python - 什么导致IndexError:py2exe中的元组索引超出范围
- flutter - 如何在颤动中将字符串作为全局变量
- ios - UIViewController 与其中的任何子视图显示模棱两可
- python - 尝试在 for 循环中动态创建/关联函数到变量
- javascript - 使用 Window.getSelection() 粗体/取消粗体选定的文本
- java - 使用arraylist读取.txt文件时如何忽略主文件夹中的某些文件
- nginx - Nginx proxy_set_header 含义