gpt4 book ai didi

performance - Salesforce SOQL 查询长度和效率

转载 作者:行者123 更新时间:2023-12-02 05:36:31 30 4
gpt4 key购买 nike

我正在尝试解决仅删除符合两个条件的行的问题,每个条件都是一个 ID 列表。现在这些 Id 是成对的,如果要删除的项目有一个,它必须有第二个成对,所以只使用两个 in 子句是行不通的。我想出了两个解决方案。

1) 使用两个 in 子句,然后遍历项目并检查两个有问题的 ID 是否出现在正确的配对中。

即.

for(Object__c obj : [SELECT Id FROM Object__c WHERE Relation1__c in :idlist1 AND Relation2__c in:idlist2]){
if(preConstructedPairingsAsString.contains(''+obj.Relation1__c+obj.Relation2__c)){
listToDelete.add(obj);
}
}

2) 遍历 ID 并构建公认的长查询。

我喜欢第二个选择,因为我只得到我需要的项目并且可以将列表扔进删除,但我知道 salesforce 有 SOQL 查询的问题。第二个选项有惩罚吗?是构建和查询长字符串更好,还是获取比需要更多的对象并进行过滤更好?

最佳答案

通常,您希望将尽可能多的逻辑放入 soql 查询中,因为它不会使用任何脚本语句,而且它们的执行速度比您的代码快。但是,soql 查询有 10k 个字符的限制(可以提高到 20k),因此根据我的粗略计算,您只能输入 250 个左右的 ID 对才能达到该限制。

我会选择选项 1,或者如果您真的关心效率,您可以在对象上创建一个公式字段,将 ID 配对并对其进行过滤。

formula: relation1__c + '-' + relation2__c

for(list<Object__c> objs : [SELECT Id FROM Object__c WHERE formula__c in :idpairs]){
delete objs;
}

关于performance - Salesforce SOQL 查询长度和效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11612183/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com