Visualforce 페이지에서 특정 sObject 테이블의 레코드 수를 표시하고 싶습니다.LimitException : 너무 많은 쿼리 행 : count1() 집계 함수가있는 50001
// Return the number of clients
public integer getClientAccountCount() {
return [Select count() from Account where SomeCustomField__c = 'Client' limit 50000];
}
가 내가 될하려는 SOQL의 제한 절을 생각 : 컨트롤러에서 다음
<p>Client Account Count: {!ClientAccountCount}</p>
: 내가 좋아하는 아주 간단한 무언가를 가지고하려는없이 VisualForce 페이지에서
모든 것이 최대 50,000 개를 반환하기 때문에 괜찮습니다. 집계 | 179 SOQL_EXECUTE_BEGIN [108] : 0 | SELECT COUNT() 여기서 SomeCustomField__c = '클라이언트'제한 50000 계정에서09 : 29 : 12 그러나 실제로 나는 아직도 생산 조직에서이 예외가
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 토론 게시판 - Too many query rows on COUNT(*) function에 비슷한 게시물이 있습니다. 쿼리 행 제한을 늘리기 위해 읽기 전용으로 VF 페이지를 설정할 수 없습니다.
예. 동의합니다. 그 아이디어를 홍보했습니다. 그렇다면 SOQL 쿼리를 사용하여 SObject 테이블의 레코드 수를 찾는 방법은 무엇입니까? –
@KirillYunussov. 테이블의 모든 레코드를 반복하고 총 레코드 수를 누적하는 배치 작업을 생성 할 수 있습니다. 그다지 효율적이지는 않겠지 만 궁극적으로 총 레코드 수를 얻게됩니다 (프로세스가 실행되는 동안 발생하는 모든 변경 사항을 줄임). –