Apex Too many SOQL queries: xxxエラーの解決方法

環境
Salesforce

エラー
Too many SOQL queries: xxx

原因
Salesforceではガバナ制限が設けられており、1トランザクションで発行される SOQL クエリの
合計数の上限が100と定められています。(非同期処理では200)

Apex はマルチテナント環境で実行するため、Apex ランタイムエンジンは、
回避 Apex コードまたはプロセスが共有リソースを独占しないよう制限事項を強制します。
一部の Apex コードが制限を超える場合、関連付けられたガバナは、
処理できない実行時例外を発行します。

修正前コード

for(Integer i = 0; i < 112; i++){
    List<Account> accList = [SELECT Id FROM Account];
}

対策
SOQLをforループ内で使用しない

修正後コード

for(Account accs : [SELECT Id FROM Account]){
    //処理コード
}

 

IT

Posted by arkgame