首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环的soql和soql列表的区别是什么?

循环的soql和soql列表的区别是什么?
EN

Stack Overflow用户
提问于 2022-01-22 09:32:00
回答 1查看 744关注 0票数 0

根据它提到的文档) (soql for循环)使用对queryMore的调用检索所有的queryMore,而(list for循环)则检索许多对象记录。建议使用(soql for循环) over (list for循环)来避免堆大小限制错误。

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

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

代码语言:javascript
复制
list<contact> conList=new list<contact>();

conList=[Select id,phone from contact];

为了避免这种情况,我们应该使用"SOQL for循环“作为con变量,如下所示,每次将有一个记录,即2k.B的数据,从而防止堆大小限制错误。

代码语言:javascript
复制
for (List<Contact> con: [SELECT id, name FROM contact]){    

}

问题--这意味着"SOQL for循环“作为con变量,一次将有1条记录,即每次2k.B的数据。

EN

回答 1

Stack Overflow用户

发布于 2022-01-26 08:35:40

主要的区别是,如果您这样做,就不能在for循环之外使用检索到的记录。当您将记录存储在列表中时,您可以在for循环中使用该列表来操作它,但是您也可以在以后的其他操作中使用它。举个例子:

代码语言:javascript
复制
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. 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70811548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档