SOQLのWHEREステートメントへの文字数制限は本当か?
salesforceのクエリの文字数には制限があるという噂を聞いた。
WHERE ステートメントに4000文字の制限があるという。 以下のバッチ処理を書いてみた。
public class QueryLimitCheck implements Database.Batchable<sObject>, Database.Stateful{ public Database.QueryLocator start(Database.BatchableContext BC){ List<String> list1 = new List<String>(); for(Integer i = 0; i < 10000;i++){ String a = 'a0D330000007EY9a'; //実在しないID list1.add(a); if(i == 9999){ String b = 'a0D28000007EY9g'; //実在するID list1.add(b); } } System.debug(list1.size()); String query = 'SELECT Id, Name FROM Jobseeker__c WHERE Id in :list1'; System.debug(query); Database.QueryLocator q = Database.getQueryLocator(query); System.debug('q = '+ q); return q; } public void execute(Database.BatchableContext BC, List<Jobseeker__c> scope) { System.debug('xxxxx =' + scope); } public void finish(Database.BatchableContext BC) { }
1万IDをぶっこんだので、クエリの文字数は15万を超えます。 実行したら普通にID=a0D28000007EY9gレコードが結果(executeのscope)として返ってきた。 噂によるとクエリの文字数制限を超えると結果が返ってこないという恐ろしい現象が起きると書いてあるのだが。 どうゆうことだ。。。同じIDだからいけないのかな?んなあほな。