合并中使用的校验和?

时间:2016-10-28 13:41:53

标签: sql-server merge checksum

我们去年有一位开发人员离开了我们......他是一个很棒的人!作为一名DBA,我非常喜欢他在团队中! 但是我从他那里得到了这段代码:

when matched and
                    checksum(TARGET.Lead_ID, TARGET.Salesforce_id)          <> checksum(SOURCE.Lead_ID,SOURCE.Salesforce_id)
            or      checksum(TARGET.Lead_ID, TARGET.CreatedById)            <> checksum(SOURCE.Lead_ID,SOURCE.CreatedById)
            or      checksum(TARGET.Lead_ID, TARGET.Email)                  <> checksum(SOURCE.Lead_ID,SOURCE.Email)
            or      checksum(TARGET.Lead_ID, TARGET.LastModifiedById)       <> checksum(SOURCE.Lead_ID,SOURCE.LastModifiedById)         
            or      checksum(TARGET.Lead_ID, TARGET.ConvertedContactId)     <> checksum(SOURCE.Lead_ID,SOURCE.ConvertedContactId)
            or      checksum(TARGET.Lead_ID, TARGET.ConvertedDate)          <> checksum(SOURCE.Lead_ID,SOURCE.ConvertedDate)
            or      checksum(TARGET.Lead_ID, TARGET.ConvertedOpportunityId) <> checksum(SOURCE.Lead_ID,SOURCE.ConvertedOpportunityId)
            or      TARGET.IsConverted                                      <> SOURCE.IsConverted           
            or      checksum(TARGET.Lead_ID, TARGET.Mini_West_Local_Marketing__c) <> checksum(SOURCE.Lead_ID,SOURCE.Mini_West_Local_Marketing__c)
            or      checksum(TARGET.Lead_ID, TARGET.Valid_Leads__c)         <> checksum(SOURCE.Lead_ID,SOURCE.Valid_Leads__c)
            or      checksum(TARGET.Lead_ID, TARGET.FE_Owner__c)            <> checksum(SOURCE.Lead_ID,SOURCE.FE_Owner__c)
            or      checksum(TARGET.Lead_ID, TARGET.FE_Sales_Group__c)          <> checksum(SOURCE.Lead_ID,SOURCE.FE_Sales_Group__c)

我知道校验和:“返回在表的一行或表达式列表上计算的校验和值。 CHECKSUM旨在用于构建哈希索引。'。

但是,为什么他会在那里使用它?

注意:(这是代码的一部分,真正的“匹配时”子句有100列,源和目标都有100列......)

1 个答案:

答案 0 :(得分:1)

我最好的猜测是他试图“快速”检测变化,同时避免var ref=firebase.databae().ref("user/"+uid+"/address"); ref.push({city:"ABC",houseNo:"444",postalCode:"3433",street:"street"}); 语义。

在使用(NULL + EXISTS)或(EXCEPT + NOT EXISTS)似乎完成相同的结果时,不确定为什么他会这样写N个分支和N * 2 INTERSECT个操作:

CHECKSUM