我对获取游标有疑问
目标函数: https://godoc.org/google.golang.org/appengine/datastore#Iterator.Cursor
从下面的代码可以读取的范围内,获取游标时设置了偏移量 https://github.com/golang/appengine/blob/master/datastore/query.go#L702-L705
当我使用GCP控制台的堆栈跟踪检查了执行此函数的结果时,Insights显示警告
Issue: Use of offset in datastore queries.
Description: Your app made 1 remote procedure calls to datastore.query () and datastore.next () using offset.
Recommendation: Use cursor instead of offset.
查询详细信息
g.co/gae/datastore/offset 10
g.co/gae/datastore/skipped 10
抵销会影响效果和结算,我想避免这种情况 有办法避免使用偏移吗?还是这是正确的行为?
答案 0 :(得分:1)
尽管Cloud Datastore支持整数偏移量,但您应避免 使用它们。而是使用游标。仅使用偏移量可以避免 将跳过的实体返回到您的应用程序,但是这些实体 仍在内部检索。跳过的实体确实会影响 查询的延迟,并且您的应用需要为读取付费 检索它们所需的操作。使用游标而不是偏移量 让您避免所有这些费用。
您所指的q.offset
是用于Cursor
实现的内部变量,它不是上面引用所提及的显式查询偏移量。
因此,使用Cursor
应该没问题。