【问题标题】:How to keep large SOQL query cached in Salesforce Org. for speedy returns?如何在 Salesforce Org 中缓存大型 SOQL 查询。为了快速返回?
【发布时间】:2017-05-24 14:48:20
【问题描述】:

我们遇到了一个问题,我们需要人员的事件关系,并且在我们测试的这一周内拥有近 400 个事件关系的这一庞大群体遇到了问题......当尝试抓住这个大群体的事件关系,这将需要永远并且可能超时。但是,如果您在超时后立即重试,它会在几秒钟内完成,非常棒。我在想这是销售人员只是在查询 soql 查询/信息,所以它第二次可以很快行动。我试图通过定期运行一个批处理作业来查询每个成员的事件关系,从而使这个查询缓存并准备好,这样当他们尝试访问我们的应用程序时,超时问题就会停止。

但是,这甚至似乎不起作用。即使批处理正常运行并查询所有这些事件关系,当您在一段时间后不使用它就进入应用程序时,它仍然会超时或第一次花费很长时间然后很快。

有没有办法成功地保持缓存,以便当用户去尝试查看一大群人的所有事件关系时它会运行得非常快?通过开发人员控制台,我们看到事件关系查询是代码中的大量时间消耗和真正的问题。我一直在研究salesforce的平台缓存。将这些数据存储在那里会提供我正在寻找的解决方案吗?

【问题讨论】:

  • 你应该把它放在 Salesforce.stackexchange
  • 是的,平台缓存可以提供解决方案。在堆栈交换中查看我的answer about platform cache

标签: salesforce apex soql


【解决方案1】:

您应该考虑通过使用 where 原因中的索引和必要时自定义索引来更新您的查询。

【讨论】:

  • 我最终完全依赖于 ActivityDate 而不是开始和结束日期时间字段,因为 ActivityDate 被索引,而其他日期字段没有。使用查询计划,执行此操作后,我的查询成本从大约 4 变为 0.4。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-25
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多