运行总计 - 触发器还是查询?

时间:2014-01-07 14:08:01

标签: sql tsql database-performance

以下哪种情况a)提供更好的性能,b)更可靠/准确。我简化了使用的过程和表格。我会提供代码/工作,但它是相当简单的东西。我正在使用MS-SQL2008,但我认为这个问题与平台无关。

1)项目从库存中删除(库存项目具有唯一ID),触发更新[tblSold]的触发器,如果​​ID不存在则创建记录,添加值1,如果确实存在,则将当前值加1。销售细节记录在其他地方。

  • 当要求库存可用性时,根据物料ID从该表计算。

2)当要求库存可用性时,它只根据ID对[tblSales]中的数量求和。

将严重要求库存可用性,并且出于显而易见的原因不会出错。

2 个答案:

答案 0 :(得分:1)

我会采用第一种方法,没有理由计算行数,当你只能从数据库中读取一个值时,触发器就不会有任何坏处,因为你不会像要求数量那样经常出售物品。

答案 1 :(得分:1)

我打算玩魔鬼来提倡先前的答案并建议使用查询 - 这是我的理由。

  • SQL专为读取而设计,维护良好的数据库对数亿行数据没有任何问题。 如果您的数据编入索引并保持良好,则性能不应成为问题。
  • 触发器可能难以追踪,它们不那么明确并且在后台更新信息 - 如果你忘了它们,它们可能是一场噩梦。一个小问题,但过去曾多次使我烦恼!
  • 最重要的一点是,如果您使用查询(假设它是正确的),您的数据永远不会失去同步,并且可以轻松重新生成。运行计数会使这非常困难。

最终这是一个设计决定,每个人都会有不同的看法。在一天结束时,它将归结为您的偏好和设计。