Google 应用引擎和分页

发布于 2024-08-29 06:46:20 字数 433 浏览 7 评论 0原文

如何编写一个查询,从数据存储中 10000 个对象的集合中选择第 2000-2010 个项目。

我知道可以在 GQL 中这样做:

select * from MyObject limit 10 offset 2000

根据文档< /a>,当使用 offset 时,引擎仍然会获取所有行,只是不返回它们,从而使查询以与 offset 的值线性对应的方式执行代码>.

还有更好的办法吗?例如使用伪ROWNUM列,就像在其他类型的数据存储中可以做的那样。

How would one go about writing a query that selects items 2000-2010 out of a collection of 10000 objects in the data store.

I know that it can be done like this in GQL:

select * from MyObject limit 10 offset 2000

According to the documentation, when using an offset the engine will still fetch all the rows, only not return them, thus making the query perform in a way that corresponds linearly with the value of offset.

Is there any better way? Such as using a pseudo ROWNUM column like one could do in other types of data stores.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

魂ガ小子 2024-09-05 06:46:20

除了缓存结果之外,没有办法使用偏移量有效地分页。不过,您可以使用数据存储区游标来实现分页使用“书签”类型的方法。

There's no way to efficiently page using offsets, except to cache the results. You can, however, use datastore cursors to implement paging using a 'bookmark' type approach.

青芜 2024-09-05 06:46:20

除了使用游标之外,您还可以使用排序方法。例如:

SELECT * FROM MyObject ORDER BY field LIMIT 10;

对于前 10 个对象,然后对于接下来的 10 个对象,等等。

SELECT * FROM MyObject WHERE field > largestFieldValueFromPreviousResult ORDER BY field LIMIT 10;

如果您没有其他合适的字段,字段甚至可以是键。以下是更完整的示例:

http://code.google.com/appengine/articles /paging.html

Besides using cursors you can also use a sort order approach. For example:

SELECT * FROM MyObject ORDER BY field LIMIT 10;

for the first 10 objects and then for the next 10 objects, etc.

SELECT * FROM MyObject WHERE field > largestFieldValueFromPreviousResult ORDER BY field LIMIT 10;

Field could even be a key if you don't have another appropriate field. Here is a more complete example:

http://code.google.com/appengine/articles/paging.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文