MENU
Abo
某SIer勤務。
新卒文系からエンジニア就職。
日々の学びをつらつらと書いています。
保有資格:
Salesforce認定アドミニストレーター  
Salesforce認定Platformデベロッパー
Salesforce認定上級Platformデベロッパー
カテゴリー
アーカイブ

【Apex】「Too many SOQL queries: 101」エラーの原因と回避策

今回は、Apexの「Too many SOQL queries: 101」の原因と回避策についてです。

このエラーはエンジニアになりたての頃よく出くわしました。。。

目次

エラー原因

エラーの原因は、1度の処理(以下1トランザクション)で発行される SOQL クエリの合計数が100を超えたからです。

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

ガバナ制限とは、処理実行時にSalesforceにあるDBやメモリなどのリソースが大きく占領されることを防ぎ、他のユーザの使用に影響を与えないための制限のことです。(参考:Apexガバナ制限

例えば、以下のコードを匿名実行コンソールで実行し、SOQLを101回以上発行するとエラーがでます。

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

エラー回避策

回避策としては、SOQLをforループ内で使用しないことです。

ループ内で使用するとループの回数分SOQLが発行されすぐに上限に達してしまいます。

例えば、以下のコードのように「SOQL for」を使用することでこのエラーを回避することができます。

for(Account acc : [SELECT Id FROM Account]){
    //処理
}

今回は以上です!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

某SIer勤務。
新卒文系からエンジニア就職。
日々の学びをつらつらと書いています。
保有資格:Salesforce認定アドミニストレーター
     Salesforce認定Platformデベロッパー
     Salesforce認定上級Platformデベロッパー

コメント

コメントする

CAPTCHA


目次