【问题标题】:What is the difference between soql for loop vs soql listsoql for循环与soql列表有什么区别
【发布时间】:2022-01-22 09:32:00
【问题描述】:

根据它提到的文档)(soql for loop)使用对 query 和 queryMore 的调用检索所有 sObject,而(list for loop)检索许多对象记录。建议在 (list for loop) 上使用 (soql for loop) 以避免堆大小限制错误。

总堆大小限制:6 M.B 同步和 12 M.B 异步。

在以下情况下,假设每条记录占用 2 K.B,因此 50,000 将占用 50,000*2=100000 K.B(conList 中约为 100 M.B),这将导致堆大小限制错误,因为同步允许的限制为 6 MB。

list<contact> conList=new list<contact>();

conList=[Select id,phone from contact];

为避免这种情况,我们应该使用“SOQL for loop”,因为下面突出显示的 con 变量一次将有 1 条记录,即一次 2k.B 的数据,从而防止堆大小限制错误。

for (List<Contact> con: [SELECT id, name FROM contact]){    

}

问题 - 作为下面突出显示的 con 变量的“SOQL for loop”是什么意思,一次有 1 条记录,即一次有 2k.B 的数据。

【问题讨论】:

    标签: for-loop salesforce apex soql


    【解决方案1】:

    主要区别在于,如果您使用它,则不能在 for 循环之外使用检索到的记录。当您将记录存储在 List 中时,您可以使用该列表在 for 循环中对其进行操作,但您也可以稍后在其他操作中使用它。 举个例子:

    List<Contact> conList = [SELECT Id, Name FROM Contact LIMIT 100];
    for(Contact c:conList){
        c.Title = Mr/Mrs;
    }
    update conList;//I am able to use the same list in the update call. 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-14
      • 1970-01-01
      • 1970-01-01
      • 2011-04-01
      • 1970-01-01
      • 2019-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多