Salesforce API查询的SOQL分页

时间:2009-10-02 01:34:27

标签: pagination salesforce soql

是否有一种有效的方法来浏览SOQL查询的结果,而不会将所有查询结果恢复,然后丢弃大部分查询结果?

例如,我希望能够翻阅一次显示10条记录的完整联系人列表。我没有必要按任何特定领域排序。

2 个答案:

答案 0 :(得分:8)

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

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

即。当请求页面时,可能需要sObjects:

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

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

2012年春季发布更新

看起来有新功能可以为SOQL添加OFFSET支持。 E.g。

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(一般可用性?)

答案 1 :(得分:2)

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

我像你一样做了分页。但是我遇到了另一个问题,我不能同时在服务器端进行排序。因为排序和分页都需要在'order by'子句后添加列。