表:
dbo.Patients
- >数据表
dbo.ResultsSTored
- >商店已计算结果以避免冗余计算
if not exists(select Top 1 PercentMatch from dbo.ResultsStored where HashedKey = HASHBYTES('MD5', @StringConcat)
AND ModifiedAt > (Select MAX(ModifiedAt) FROM dbo.Patients as Pat WHERE Pat.RowID = ResultsStored.RowID ))
begin
/*some code that calls functions that check for percentage match in dbo.Patients*/
end
else
begin
select SearchSerial,StringSearched, RowId, PercentMatch from dbo.ResultsStored where HashedKey = HASHBYTES('MD5', @StringConcat) order by SearchSerial desc, PercentMatch desc
end
现在,可能出现搜索结果存在于dbo中的情况。结果从两天前存储但昨天有人在dbo.Patients表中添加了一个新行,其匹配百分比可能比{{ 1}}表。
在这种情况下,dbo.ResultsStored给我的是不是百分比最高的行。
dbo.ResultsStored
表基本上是为了避免dbo.ResultsStored
表中的不必要的查找,而我们正在寻找的内容已经存在于dbo.patients
表中。
但是如何处理添加到dbo.ResultsStored
表的新数据以获得更新和正确的结果。
答案 0 :(得分:1)
听起来ResultsStored
会在某种时间表上刷新。如何获得仅在Patients
中获取ResultsStored
中不存在PercentMatch
内的记录的视图,并仅针对这些少数记录计算Union
。然后,您可以ResultsStored
使用{{1}}表,这样您就可以获得不必重新计算历史数据的好处,并且可以以最小的开销包含最新数据。