如何编写一个查询,从数据存储中的 10000 个对象的集合中选择项目 2000-2010。
我知道在 GQL 中可以这样做:
select * from MyObject limit 10 offset 2000
根据文档,当使用offset
引擎时,引擎仍然会获取所有行,只是不返回它们,从而使查询以与 的值线性对应的方式执行offset
。
有没有更好的办法?例如使用伪ROWNUM
列,就像在其他类型的数据存储中可以做的那样。
如何编写一个查询,从数据存储中的 10000 个对象的集合中选择项目 2000-2010。
我知道在 GQL 中可以这样做:
select * from MyObject limit 10 offset 2000
根据文档,当使用offset
引擎时,引擎仍然会获取所有行,只是不返回它们,从而使查询以与 的值线性对应的方式执行offset
。
有没有更好的办法?例如使用伪ROWNUM
列,就像在其他类型的数据存储中可以做的那样。
除了缓存结果外,没有办法有效地使用偏移量进行分页。但是,您可以使用数据存储游标通过“书签”类型的方法实现分页。
除了使用游标之外,您还可以使用排序顺序方法。例如:
SELECT * FROM MyObject ORDER BY field LIMIT 10;
前 10 个对象,然后是接下来的 10 个对象,依此类推。
SELECT * FROM MyObject WHERE field > largestFieldValueFromPreviousResult ORDER BY field LIMIT 10;
如果您没有另一个合适的字段,字段甚至可以是键。这是一个更完整的示例: