使用MS SQL触发器而不是视图

时间:2014-02-17 20:18:57

标签: sql sql-server

这是我的第一个问题所以请宽容。

在我目前工作的公司中,我们将MS SQL Server用于金融产品数据库以及与之相关的所有内容以及客户使用的一个主要应用程序(内部客户 - 公司内部)。

以前的程序员以这种方式设计数据库,在每一笔付款对应表格中的一行之后(由于我们有不同的付款方式,因此我们有不同的表格),有一个触发器会启动并计算整个合约的余额 - 什么可以持续超过60秒.....通常它不会超过15秒但仍然看起来很傻(慢)。更不用说系统不是交易性的......但是......并且不能进行潜在的15s +长交易。

我提议应该删除所有这些触发器(应该只留下那些监视历史表的那些触发器)并且所有计算都应该由Views执行。

当然我甚至不能在这些系统中引入交易,因为在每个简单的单个插入后都有一个触发器运行15秒......

我的问题是,你可以看到两者的缺点和优势(我需要承认我非常喜欢第二种解决方案)你能从你的经历中告诉我什么。我应该重建触发器以使它们更快或只是摆脱它们并使用视图。

Arek

1 个答案:

答案 0 :(得分:1)

我们公司有类似的财务要求。我可以告诉你,太多不必要的触发器是坏的。它使系统陷入困境并减慢加载时间(我们加载了大量数据)。

但是我也可以说它“取决于”最终游戏的内容。您是否尝试在用户在某个门户网站上运行的报告中显示这些“计算”值?别的什么?我在这里要确定的是“计算出的值是否需要驻留在数据库中?难道不能简单地在需要时进行计算吗?”

这就是我们做事的方式,虽然视图可行,但我建议您创建SQL函数,以便利用最佳的优化实践。