Pagination Salesforce API查询的SOQL分页

Pagination Salesforce API查询的SOQL分页,pagination,salesforce,soql,Pagination,Salesforce,Soql,有没有一种有效的方法可以分页浏览SOQL查询的结果,而不必返回所有查询结果,然后丢弃大部分查询结果 例如,我希望能够一次翻阅显示10条记录的完整联系人列表。我不需要按任何特定字段排序。您可以使用自动编号字段在服务器端进行分页。此字段可以在“order by”子句之后使用,它可以用作索引字段 我做过像你这样的分页。但我还有一个问题,我不能同时在服务器端进行排序。因为排序和分页都需要在“ORDERBY”子句之后添加列 目前,我发现通过合作伙伴API处理任何SOQL查询的最有效的解决方案是,在请求当前

有没有一种有效的方法可以分页浏览SOQL查询的结果,而不必返回所有查询结果,然后丢弃大部分查询结果


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

您可以使用自动编号字段在服务器端进行分页。此字段可以在“order by”子句之后使用,它可以用作索引字段


我做过像你这样的分页。但我还有一个问题,我不能同时在服务器端进行排序。因为排序和分页都需要在“ORDERBY”子句之后添加列

目前,我发现通过合作伙伴API处理任何SOQL查询的最有效的解决方案是,在请求当前结果之外的页面时,持久化从初始QueryResult和查询定位器返回的Sobject

这需要在Salesforce QueryResult之上提供一定级别的分页支持

即,当请求页面时,可能需要从以下位置获取对象:

  • 当前(缓存的)查询结果
  • 可以使用查询定位器获取的后续查询结果
  • 先前的查询结果
  • 三者的某种结合
如果页面跨越两个(或更多)QueryResult,则需要创建一个包含所有必需记录的人工QueryResult

2012年春季发布的更新

看起来有新的功能即将出现,它将为SOQL添加偏移支持。例如

SELECT Name FROM Merchandise__c WHERE Price__c > 5.0 ORDER BY Name LIMIT 50 OFFSET 100

2012年夏季发布的更新


(是否普遍可用?

在Salesforce ideas网站上,讨论了将Id字段与order by一起使用,并将SOQL功能限制为页面浏览结果。看,这可能会给我带来不好的报应,但我确实找到了一种在通用SOQL查询之上进行分页的方法。我想分享代码,但它是商业产品的一部分。如果有人感兴趣,我能做的就是分享一个链接。