合并中使用的校验和?

checksum used in merge?

我们有一位开发人员去年离开了我们......他是一个很棒的人!作为一名 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)

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

可是,他为什么要在那里用呢?

注意:(这是代码的一部分,真正的'when matched'子句有100列,源和目标都有100列......)

我最好的猜测是他试图 "quickly" 检测变化,同时避免 NULL 语义。

不太确定为什么他会这样写,而使用 (EXISTS + EXCEPT) 或 (NOT EXISTS + INTERSECT) 似乎可以完成相同的任务没有 N 个分支和 N * 2 CHECKSUM 个操作的结果:

when matched
 and exists (
         select [SOURCE].[Lead_ID]
              , [SOURCE].[Salesforce_id]
              , [SOURCE].[CreatedById]
              , ...
         except
         select [TARGET].[Lead_ID]
              , [TARGET].[Salesforce_id]
              , [TARGET].[CreatedById]
              , ...
     )