Loading

SOQL-Fehler System.QueryException: Non-selective query against large object type

Veröffentlichungsdatum: Sep 24, 2021
Beschreibung
Wenn Sie eine SOQL-Abfrage für ein Objekt mit mehr als 200.000 Datensätzen ausführen und gleichzeitig Auslöser aktiv sind, erhalten Sie möglicherweise den folgenden Fehler: "System.QueryException: Non-selective query against large object type."
Lösung
Beim Ausführen einer SOQL-Abfrage wertet der SOQL-Abfrageoptimierer die von der Abfrage verwendeten Filter aus, um festzustellen, ob es einen selektiven Filter gibt, der verwendet werden kann, um die Ausführung der Abfrage zu steuern. Werden beim Ausführen von Auslösern keine selektiven Filter gefunden, wird die Abfrage als nicht selektiv gekennzeichnet und die erwähnte Abfrageausnahme zurückgegeben. 

Ein Filter wird als selektiv angesehen, wenn er auf einem indizierten Feld basiert und nach heuristischer Auswertung auf weniger als 10 % der Datensätze zutrifft.

In einigen Fällen ist eine schnelle Fehlerbehebung möglich, indem die Kennzeichnung "Externe ID" für ein Feld aktiviert wird, das in der WHERE-Klausel der SOQL-Abfrage verwendet wird. Beispiel:

SELECT Type FROM Account WHERE Text_Field__c = '<value>'

würde den Index von Text_Field__c verwenden, wenn für dieses Feld die Kennzeichnung "Externe ID" aktiviert wäre und der Abfrageoptimierer nach heuristischer Auswertung festgestellt hätte, dass <value> auf maximal 10 % der Datensätze zutrifft.

So aktivieren Sie die Kennzeichnung "Externe ID" für ein Feld:
1) Navigieren Sie zur Feldliste des Objekts:

1a) Gehen Sie in Classic zu "Setup" | "Erstellen" | "Objekte" | "<Objektname>" | "Felder".
1b) Gehen Sie in Lightning Experience zu "Setup" | "Objekt-Manager" | "<Objektname>" | "Felder und Beziehungen".

2) Klicken Sie dann neben dem Feldnamen auf "Bearbeiten" und aktivieren Sie das Kontrollkästchen Externe ID.

HINWEIS: Wenn Ihre SOQL-Abfrage auch nach Aktivieren der Kennzeichnung "Externe ID" für ein in der WHERE-Klausel verwendetes Feld weiterhin nicht selektiv ist, erstellen Sie einen Kundenvorgang beim Support, um weitere Hilfe zu erhalten. Der Support entscheidet, ob es Kandidaten für eine benutzerdefinierte Indizierung gibt oder die Abfrage um zusätzliche Filter erweitert werden muss.

Weitere Ressourcen:
Nummer des Knowledge-Artikels

000384950

 
Laden
Salesforce Help | Article