0
我想在许多实体中获取页面。如何分页ndb中的许多实体[GAE/Python]
型号为10000名的实体,
我希望得到一个指数5000
entities = Model.query().fetch(10, offset=5000)
,但是,这是反模式。
使用光标模式,
entities, cursor, more = Model.query().fetch_page(10) // 0〜10
entities, cursor, more = Model.query.fetch_page(10, start_cursor=cursor) // 10〜20
这是获得一个开始光标。
cursor = ??? // how to get a cursor start index 5000.
我想获得游标。
这是一个好主意吗?
是的,但偏移量的“奇怪”是它仍然读取偏移的数据。随着数据存储的建立方式,您最终会在扫描结果之前“扫描”您的偏移量......这意味着您可能必须支付比预期更多的费用,因为该偏移量 – Patrice 2014-09-03 22:48:04
正如我所提到的,偏移量是一般的办法。如果您的分页只有next和prev应该可以使用获取页面。我认为在所有数据库中,如果你抵消了,它仍然会扫描你的抵消额。它只是在GAE你得到它。类似的问题http://stackoverflow.com/questions/10291291/what-is-the-cost-difference-between-paging-with-a-cursor-or-using-offset – marcadian 2014-09-03 23:37:58
我并不是说关于你的答案具体,更多的是对@kuninori的警告。明显偏移总是扫描。但正如你所说,在GAE你付出了代价。如果我遇到同样的问题,我确实会进行分页和获取:) – Patrice 2014-09-03 23:40:54