gpt4 book ai didi

salesforce - 澄清 soql 查询的调控器限制

转载 作者:行者123 更新时间:2023-12-03 10:05:48 25 4
gpt4 key购买 nike

设置:

假设我有五个我创建的 Contact sObjects 和 apex。当您一次插入一个联系人时,您会通过触发器和它使用的东西进行 x soql 查询。

问题:

  1. 因此,如果您在代码中一次插入一个联系人,您将获得 5 倍的 soql 查询(对吧?)。

  2. 现在假设您将这 5 个人放入一个数组中,并使用一个 insert 插入数组。有多少个soql查询?

  3. 关于 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

关于salesforce - 澄清 soql 查询的调控器限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10835392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com