我有一张设施表和一张传输表。我想计算各种各样的东西,例如,设施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从服务器下载值然后再次上传(也很糟糕)
答案 0 :(得分:1)
使用更新查询。 T-SQL将该字段的名称解释为输入参数。因此,如果您有一个包含两列的表:facilityName和cacheValue字段,您可以执行类似这样的操作来更新cacheValue字段,使其等于scalarUserDefinedFunction(facilityName)
Update cacheTable set cacheValue=scalarUserDefinedFunction(cacheTable.FacilityName)