【发布时间】:2017-06-09 09:46:20
【问题描述】:
我正在尝试这个查询:
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];
它给了我一个错误:
选择 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 账户 ac WHERE (ac.rr_National_Insurance_Number__c = :tmpVar1 AND RecordTypeId = :tmpVar2) 10:12:05.0 (11489528)|EXCEPTION_THROWN|[49]|System.QueryException:非选择性 针对大型对象类型(超过 200000 行)进行查询。考虑一个 索引过滤器或联系 salesforce.com 了解自定义索引。
我理解 uniqueNiInputSet.size() ~ 50,所以,这不是问题,但对于该记录类型,它可能包含更多记录。
那么,如果我改变了位置,那会起作用吗?意味着,首先是记录类型,然后是 where 子句中的 NIset。是否有任何顺序如何在 SF 中选择 where 子句。那么,它只会寻找 50 个成员,然后在 50 个内搜索特定的记录类型?
【问题讨论】:
标签: select salesforce query-optimization apex soql