我有一个迁移,我运行大约10个任务。每项任务大约需要5分钟来处理50k-100k条记录,并将它们迁移到salesforce。其中一项任务的处理时间比其他任务要长得多。
此任务是将数据迁移到一个只有5个自定义字段的简单自定义对象。唯一的区别是此目标对象启用了记录类型,而其他目标对象则没有。
记录类型是否会影响性能?
来自ole db源的SQL。此查询需要1秒钟来执行和检索55k行
SELECT
rh.RevisionHardwareID AS 'Machine_Information_Id__c',
COALESCE(lmi.Name, lmz.Name) as 'License_Method__c',
rhd.Servers AS 'Servers__c',
rhd.Managers AS 'Managers__c',
COALESCE(rhd.LicenseCount, rhs.CPUCount, rhz.MIPS, rhi.CPW) AS 'Quantity__c',
CASE
WHEN rhd.RevisionHardwareID IS NOT NULL THEN '0122J00000023maQAA'
WHEN rhi.RevisionHardwareID IS NOT NULL THEN '0122J00000023mcQAA'
WHEN rhz.RevisionHardwareID IS NOT NULL THEN '0122J00000023mdQAA'
WHEN rhs.RevisionHardwareID IS NOT NULL THEN '0122J00000023mbQAA'
END AS 'RecordTypeId'
FROM RevisionHardware rh
LEFT JOIN RevisionHardware_Desktop rhd ON rhd.RevisionHardwareID = rh.RevisionHardwareID
LEFT JOIN RevisionHardware_iSeries rhi ON rhi.RevisionHardwareID = rh.RevisionHardwareID
LEFT JOIN RevisionHardware_zSeries rhz ON rhz.RevisionHardwareID = rh.RevisionHardwareID
LEFT JOIN RevisionHardware_Server rhs ON rhs.RevisionHardwareID = rh.RevisionHardwareID
LEFT JOIN LicenseMethod lmi ON lmi.LicenseMethodID = rhi.LicenseMethod_ISeriesID
LEFT JOIN LicenseMethod lmz ON lmz.LicenseMethodID = rhz.LicenseMethod_ZSeriesID
WHERE CASE
WHEN rhd.RevisionHardwareID IS NOT NULL THEN 'Desktop'
WHEN rhi.RevisionHardwareID IS NOT NULL THEN 'iSeries'
WHEN rhz.RevisionHardwareID IS NOT NULL THEN 'zSeries'
WHEN rhs.RevisionHardwareID IS NOT NULL THEN 'Server'
END IS NOT NULL目标对象:

发布于 2019-07-17 02:17:56
我做了一个测试,删除了目标对象的所有记录类型,性能提高了10倍。
https://stackoverflow.com/questions/57062380
复制相似问题