是否有一种有效的方法来分页SOQL查询的结果,而又不带回所有查询结果然后丢弃其中的大多数?

例如,我希望能够翻阅一次显示10条记录的完整联系人列表。我不需要按任何特定字段进行排序。

最佳答案

当前,我发现与合作伙伴API进行任何SOQL查询一起使用的最有效的解决方案是,持久存储从初始QueryResult和查询定位符返回的sObject,以防在当前结果之外请求页面。

这需要在Salesforce QueryResult之上提供一定程度的分页支持。

IE。当请求页面时,可能需要来自以下对象的sObject:

  • 当前(缓存)的QueryResult
  • 可以使用查询定位器
  • 获取的后续QueryResult
  • 先前的QueryResult
  • 这三者的某种组合。

  • 如果页面跨越两个(或多个)QueryResults,则需要使用所有必需的记录来创建一个人工的QueryResult。

    2012年 Spring 发布的更新

    似乎有新功能即将向SOQL添加OFFSET支持。例如。
    SELECT Name FROM Merchandise__c WHERE Price__c > 5.0 ORDER BY Name LIMIT 50 OFFSET 100
    

    参见Spring '12 Force.com Platform Release - OFFSET added to SOQL (Pilot)

    2012年夏季版本的更新

    OFFSET is now GA(一般可用性?)

    10-07 15:25