Ich versuche, diese Abfrage:Apex Abfrageoptimierung
List<Account> onlyRRCustomer = [SELECT
ac.rr_First_Name__c,
ac.rr_Last_Name__c,
ac.rr_National_Insurance_Number__c,
ac.id,
ac.rr_Date_of_Birth__c
FROM
Account ac
WHERE
ac.rr_National_Insurance_Number__c IN :uniqueNiInputSet
AND RecordTypeId = :recordTypeId];
Es gibt mir eine Fehlermeldung:
SELECT ac.rr_First_Name__c, ac.rr_Last_Name__c, ac.rr_National_Insurance_Number__c, ac.id, ac.rr_Date_of_Birth__c FROM Account ac WHERE (ac.rr_National_Insurance_Number__c = :tmpVar1 AND RecordTypeId = :tmpVar2) 10:12:05.0 (11489528)|EXCEPTION_THROWN|[49]|System.QueryException: Non-selective query against large object type (more than 200000 rows). Consider an indexed filter or contact salesforce.com about custom indexing.
Ich verstehe uniqueNiInputSet.size() ~ 50, so ist es kein Problem, aber für Dieser Datensatztyp enthält möglicherweise mehr Datensätze.
Also, wenn ich die Position geändert, wird das funktionieren? Bedeutet, zuerst der Recordtype und dann der NIset in where-Klausel. Gibt es eine Reihenfolge, wie where-Klausel in SF ausgewählt werden. Also, es wird nur für 50 Mitglieder suchen und dann innerhalb von 50 wird es nach dem bestimmten Datensatztyp suchen?