【发布时间】: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