Ich habe eine Visualforce-Seite, auf der ich die Anzahl der Datensätze in einer bestimmten sObject-Tabelle anzeigen möchte.LimitException: Zu viele Abfragezeilen: 50001 von mit count() Aggregatfunktion
In der Visual Seite ich etwas ziemlich einfach, wie haben würde:
<p>Client Account Count: {!ClientAccountCount}</p>
Dann in der Steuerung:
// Return the number of clients
public integer getClientAccountCount() {
return [Select count() from Account where SomeCustomField__c = 'Client' limit 50000];
}
Ich dachte, mit der Limit-Klausel in dem SOQL ich würde gut, da es nur jede Rückkehr ein Maximum von 50.000 geben würde. Doch in der Praxis bekomme ich immer noch diese Ausnahme bei der Herstellung org:
09: 29: 12: 179 SOQL_EXECUTE_BEGIN [108] | Aggregationen: 0 | select count() von Konto, wo SomeCustomField__c = 'Client' Grenze 50000
09: 29: 12: 331 EXCEPTION_THROWN [108] | System.LimitException: zu viele Abfragen Zeilen: 50001
gibt es einen sicheren Weg, um diese Abfrage auszuführen, die nicht zu einer Ausnahme führen werden, dass Ich kann nicht fangen?
Seltsamerweise, wenn ich folgendes als anonymer Apex in der Produktion versuche, funktioniert es gut und gibt 50.000 zurück.
integer count = [select count() from Account where SomeCustomField__c = 'Client' limit 50000];
Vielleicht ist das Problem ist die kumulative Anzahl der Abfragezeilen über alle Vorgänge, die das Problem verursacht, und ich brauche, um die Limits in Code zu überprüfen, bevor die Abfrage ausgeführt wird?
Es gibt eine ähnliche Position auf den Diskussionsforen Force.com - Too many query rows on COUNT(*) function. Ich kann nicht festlegen, dass die VF-Seite nur gelesen wird, um das Zeilenlimit für Abfragen zu erhöhen.
Ja, ich stimme zu. Beförderte diese Idee auch. Also, wie finde ich die Anzahl der Datensätze in einer SObject-Tabelle mit einer SOQL-Abfrage? –
@KirillYunussov. Sie können einen Stapeljob erstellen, der alle Datensätze in einer Tabelle durchläuft und die Gesamtzahl der Datensätze akkumuliert. Es wäre nicht sehr effizient oder schnell, aber Sie würden schließlich die Gesamtzahl der Datensätze erhalten (weniger Änderungen, die während des Prozesses aufgetreten sind). –