GAE Datastore读取操作定价:两种查询语句对计费的影响咨询
两种GAE Datastore查询的定价影响对比
嘿,我来给你掰扯下这两个查询在GAE Datastore里的成本差异:
先看你提到的两个查询语句:
第一个全字段查询:
select * from Products where category = "electronics"
第二个指定字段的投影查询:
select name, price from Products where category = "electronics"
它们在Datastore的定价规则下区别很大:
全字段查询(select *):
这个操作会读取完整的实体数据,每返回一条结果,就会被计为1次实体读取操作——这是Datastore里的核心收费项之一,单价相对较高。投影查询(指定name、price):
因为这个查询没有使用distinct on子句,完全符合官方的投影查询定价规则:不使用distinct on子句的投影查询,查询本身计为1次实体读取,单个查询结果计为小型操作。
简单来说,不管你返回多少条结果,查询本身只算1次实体读取;而每条返回的结果,只会被计为小型操作——小型操作的单价远低于实体读取,当查询返回大量数据时,能帮你省下不少成本。
总结下:如果你的查询会返回大量结果,第二个投影查询的成本会比第一个全字段查询低很多,毕竟用低价的小型操作替代了大量的实体读取开销。
内容的提问来源于stack exchange,提问作者Ashish
相关产品推荐
相关产品推荐

