不要用把query/DML寫在迴圈裡,以避免超過系統限制的基本技巧範例
Trailhead教學-Bulk Apex
關於什麼是有效率的code,什麼是浪費資源的code。
其中解釋了:
- 在trigger中預設使用迴圈來處理bulk,而非逐筆record處理。
- 用inner query的技巧,直接獲得各account的related opportunity
- SELECT ... FROM ... WHERE ... IN ...(set)
例:[SELECT Id,Name,CloseDate FROM Opportunity WHERE AccountId IN :Trigger.New]。
也可以使用NOT IN,例:[SELECT Id,Name FROM Account WHERE Id IN :Trigger.New AND Id NOT IN (SELECT AccountId FROM Opportunity)] - update/insert整個list,而不要逐筆record操作,以避免DML超過150的限制。
留言
張貼留言