我有500个地区可以通过和500k联系。我尝试了一个小组,但无法让它工作。如何避免在返回的soql查询和行数中遇到调控器限制?
public with sharing class Test {
public static void test() {
List <_Territory__c> terrsWithAee = [select id,name, Aee_Territory__c from _Territory__c where Aee_Territory__c != null];
String s = ' t.test Terrs with Aee = ' + terrsWithAee.size() + '\n';
for (_Territory__c t :terrsWithAee) {
Integer err = [select count() from contact where (Contact_AML_Territory__c = :t.id AND BDW_AML_Territory__c != :t.Aee_Territory__c ) OR (Contact_ChoicePlus_Territory__c = :t.id AND BDW_CP_Territory__c != :t.Aee_Territory__c)];
s = 'For Terr '+ t.id + ' errors= ' + err + ' terr name = \n' ;
}
}
}
答案 0 :(得分:4)
只有两种方法可以查询这500,000个联系人行。
将其设置为地区上的批处理作业,并将批处理大小设置为1或其他一些小编号,这样您只能同时查看几个地区的联系人。
使用@readonly annotation。这将删除查询行限制,但您将无法执行任何DML语句或执行任何其他会影响数据库的内容。