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

SOQL non-selective query: avoid IsDeleted field

我的触发器出现以下异常: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 字段不能为空且是查找,因此被索引。然后,我尝试 运行 开发人员控制台中的查询(将 :centerId 替换为一个值)并且查询计划给出 cost索引作为主要操作类型 时大约 6.5。

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

那么,根据IsDeleted 字段问题,有没有什么办法可以在Index Leading Operation Type 得到一个成本below 1

在此先感谢您的任何帮助。

好的,

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