对于我的Google App Engine应用,我经常需要在数据存储区中使用大量偏移(2000或更多)。我知道这不是最佳做法,但我想知道最经济有效的方法。
我可以使用select t.*
from t
where t.type = 'Pending Starts'
union all
select t.*
from t
where not exists (select 1
from t t2
where t2.job_id = t.job_id and t2.type = 'Pending Starts'
);
功能来提高成本效益吗?
例如,如果我进行keys_only
查询,偏移量为2000且限制为10,那么按其键拉出10个项目,我应该只收取11个数据存储区读数,对吗?如果我没有使用keys_only
,我会被收取2011年的费用,对吗?
答案 0 :(得分:1)
确实,keys_only
查询会有所帮助,您的计算似乎是正确的。来自Pricing and Quota:
Small Operations Unlimited Free
小型操作包括分配云数据存储区ID或调用的调用 仅限密钥的查询。
但总的来说,您可能希望切换到使用Cursors而不是偏移,原因不仅仅是费用。来自Offsets versus cursors:
虽然Cloud Datastore支持整数偏移,但您应该避免使用 使用它们。相反,使用游标。使用偏移仅避免 将跳过的实体返回给您的应用程序,但这些实体 仍在内部检索。跳过的实体会影响 查询的延迟,并且您的应用程序需要为读取付费 检索它们所需的操作。使用游标而不是偏移 让您避免所有这些费用。