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