【发布时间】:2012-07-23 12:04:49
【问题描述】:
我正在尝试解决仅删除符合两个条件的行的问题,每个条件都是一个 id 列表。现在这些 Id 是成对出现的,如果要删除的项目有一个,那么它必须有第二个,所以只使用两个 in 子句是行不通的。我想出了两个解决方案。
1) 使用两个 in 子句,然后遍历项目并检查有问题的两个 id 是否出现在正确的配对中。
I.E.
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 查询挂断。第二个选项有惩罚吗?是构建和查询长字符串更好,还是获取比必要更多的对象并过滤?
【问题讨论】:
-
您能否给我们一个使用选项 1 运行的 SOQL 查询示例?
-
@JCD,我添加了一个示例。这不是真正的代码,但我认为它应该明白这一点。
标签: performance salesforce soql