我有一张设施表和一张传输表。我想计算各种东西,例如,设施 X 在 2011 年 4 月发送了 10124321409 次传输,其中 9959 次丢失了 SSN。这些是巨大的表,所以我会将这些计算值存储在一个“缓存”表中,以便当用户使用 UI 查看我们的系统时可以轻松访问它们(例如选择日期范围)。我有一堆用户定义的函数,它们采用设施名称和日期范围并计算一个值,就像这样
set @s = dbo.getPctMissingSSNs(facilityX, 1/1/2012, 1/15/2012) //returns pct missing ssn from 1/1/12 to 1/15/12 at facilityX
从stackoverflow,我了解到
- 循环遍历表的行是一个坏主意 循环遍历表的行的最佳方法是什么?
- 最好使用存储过程进行这些类型的计算,而不是将数据从服务器调用到客户端,计算值,然后将输出上传回服务器的缓存。
有没有一种方法可以更新每个设施的缓存,用于一堆日期范围,而无需(1)循环遍历 T-SQL 中的行(坏)或(2)循环遍历 VB.net 中的行以下载来自服务器的值,然后再次上传回来(也很糟糕)