有没有一种有效的方法来对 SOQL 查询的结果进行分页,而不会将所有查询结果返回然后丢弃其中的大部分?
例如,我希望能够翻阅完整的联系人列表,一次显示 10 条记录。我不需要按任何特定字段进行排序。
有没有一种有效的方法来对 SOQL 查询的结果进行分页,而不会将所有查询结果返回然后丢弃其中的大部分?
例如,我希望能够翻阅完整的联系人列表,一次显示 10 条记录。我不需要按任何特定字段进行排序。
目前,我发现可以通过合作伙伴 API 处理任何 SOQL 查询的最有效的解决方案是保留从初始 QueryResult 返回的 sObjects 和查询定位器,以防在当前结果之外请求页面。
这需要在 Salesforce QueryResult 之上提供一定级别的分页支持。
即,当请求页面时,可能需要从以下位置获取 sObjects:
如果页面跨越两个(或更多)QueryResult,则需要创建一个包含所有必需记录的人工 QueryResult。
2012 年春季版更新
看起来有新功能将向 SOQL 添加 OFFSET 支持。例如
SELECT Name FROM Merchandise__c WHERE Price__c > 5.0 ORDER BY Name LIMIT 50 OFFSET 100
请参阅Spring '12 Force.com 平台发布 - SOQL 中添加的偏移量(试点)
2012 年夏季版更新
OFFSET 现在是 GA(一般可用性?)
您可以使用自动编号在服务器端进行分页。该字段可以在'order by'子句之后使用,它可以充当索引字段。
我已经像你一样做了分页。但我遇到了另一个问题,我不能同时在服务器端进行排序。因为排序和分页都需要在'order by'子句之后添加列。