检查SQL Server中的数据更新

时间:2015-03-09 05:22:28

标签: sql sql-server

表:

  1. dbo.Patients - >数据表

  2. 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
    
  3. 现在,可能出现搜索结果存在于dbo中的情况。结果从两天前存储但昨天有人在dbo.Patients表中添加了一个新行,其匹配百分比可能比{{ 1}}表。

    在这种情况下,dbo.ResultsStored给我的是不是百分比最高的行。

    dbo.ResultsStored表基本上是为了避免dbo.ResultsStored表中的不必要的查找,而我们正在寻找的内容已经存在于dbo.patients表中。

    但是如何处理添加到dbo.ResultsStored表的新数据以获得更新和正确的结果。

1 个答案:

答案 0 :(得分:1)

听起来ResultsStored会在某种时间表上刷新。如何获得仅在Patients中获取ResultsStored中不存在PercentMatch内的记录的视图,并仅针对这些少数记录计算Union。然后,您可以ResultsStored使用{{1}}表,这样您就可以获得不必重新计算历史数据的好处,并且可以以最小的开销包含最新数据。