У меня есть страница Visualforce, на которой я хочу отобразить количество записей в определенной таблице sObject.
На странице Visualforce у меня будет что-то довольно простое, например:
<p>Client Account Count: {!ClientAccountCount}</p>
Тогда в контроллере:
// Return the number of clients
public integer getClientAccountCount() {
return [Select count() from Account where SomeCustomField__c = 'Client' limit 50000];
}
Я думал, что с предложением limit в SOQL все будет в порядке, так как он будет возвращать максимум 50 000. Однако на практике я все еще получаю это исключение в производственной организации:
09: 29: 12: 179 SOQL_EXECUTE_BEGIN [108] | Агрегатирования: 0 | выберите количество () из учетной записи, где SomeCustomField__c = «Клиент» лимит 50000
09: 29: 12: 331 EXCEPTION_THROWN [108] | System.LimitException: слишком много строк запроса: 50001
Есть ли безопасный способ выполнить этот запрос, который не приведет к исключению, которое я не смогу отловить?
Как ни странно, если я попробую следующее как анонимный апекс в работе, он будет работать нормально и вернет 50 000.
integer count = [select count() from Account where SomeCustomField__c = 'Client' limit 50000];
Возможно, проблема в совокупном количестве строк запросов по всем операциям, которые вызывают проблему, и мне нужно проверить ограничения в коде перед выполнением запроса?
На форумах Force.com есть похожий пост - Слишком много строк запросов в функции COUNT (*) . Я не могу настроить страницу VF только для чтения, чтобы увеличить предел строки запроса.