Par*_*ana 2 salesforce soql apex-code
建立:
假设我有五个我创建的联系人sObjects和apex.当您一次插入一个联系人时,您通过触发器和它使用的东西进行x soql查询.
问题:
因此,如果您在代码中一次插入一个联系人,则会获得5x soql查询(对吗?).
现在假设您将这5个人放入一个数组并使用一个插入插入数组.有多少个soql查询?
关于2,如果它是5倍,我们为什么要打扰?那么我们可以将DML的数量减少4?
谢谢,
这个半新人
给定的代码块和由于它而执行的所有同步顶点代码在单个执行上下文中进行评估,这意味着它具有一组调控器限制.在您给出的示例中,假设您的Contact触发器生成3个SOQL查询和一个DML语句.如果您单独插入每个联系人,那么您将为每个触发器使用5个DML语句(每个联系人插入一个)+ 1个DML语句,每个触发器使用3*5个SOQL语句,从而导致总共15个SOQL语句和10个DML代码的陈述.但是,如果您将它们作为列表插入,那么所有五个记录将作为列表发送到您的触发器(1个DML语句),然后执行其3个SOQL查询和1个DML语句一次,总共3个SOQL查询和2个DML语句.
这里的关键是设计触发器(以及大多数其他代码),以便查询和语句的数量不依赖于您正在处理的记录数.Salesforce在此提供了简要指南:http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_triggers_bulk_idioms.htm
| 归档时间: |
|
| 查看次数: |
2955 次 |
| 最近记录: |