SOQL非选择性查询:避免IsDeleted字段

时间:2015-10-01 07:40:23

标签: salesforce

我的触发器出现以下异常:System.QueryException:针对大对象类型的非选择性查询(超过100000行)。触发器中使用的查询是:

SELECT Id, Type__c, Assembled__c, Production_Center__c,Transport_to__c, Quality_Control_Result__c, Quality_Control_Date__c 
  FROM OLI_Core__c 
  WHERE Production_Center__c = :centerId 
  ORDER BY Quality_Control_Date__c DESC LIMIT 8000

Production_Center__c 字段不能为空且是查找,因此会对其编制索引。然后,我尝试在开发人员consol中运行查询(用值替换:centerId ),查询计划在索引为<< Leading>时给出成本大约6.5操作类型

查询计划请注意:“不考虑过滤器进行优化,因为未编入索引。表:OLI_Core__c字段:[”IsDeleted“] ”。 IsDeleted 是一个标准和布尔字段,我认为它不能自定义索引,我也认为这不是一个好主意,即使这是可能的。

那么,根据IsDeleted字段问题,是否有任何解决方案可以在Index Leading Operation Type中获得成本低于1

提前感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:0)

好的,

我通过使用CreatedDate(默认为索引)并获取所有最近的记录来解决此问题。然后我使用IF语句来过滤结果。 在我向Salesforce提出有关自定义索引的请求之前,将使用此解决方法。