それぞれがIDのリストである2つの基準に一致する行のみを削除する問題を解決しようとしています。これで、これらのIDはペアになります。削除するアイテムに1つある場合は、ペアの2番目のIDが必要であるため、2つのin句を使用するだけでは機能しません。私は2つの解決策を考え出しました。
1) 2つのin句を使用しますが、アイテムをループして、問題の2つのIDが正しいペアで表示されることを確認します。
IE
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をループして、明らかに長いクエリを作成します。
必要なアイテムだけを取得し、リストを削除するだけでよいので、2番目の選択肢が好きですが、salesforceがSOQLクエリでハングアップしていることはわかっています。2番目のオプションにペナルティはありますか?長い文字列を作成してクエリを実行するのが良いですか、それとも必要以上のオブジェクトを取得してフィルタリングするのが良いですか?