假设我有一个模型
class MyModelList(db.Model):
listed_props = db.StringListProperty(indexed=True)
我用
SELECT * from MyModelList where listed_props = 'a' and listed_props = 'b'
它会像我有一个模型一样具有几乎一样的性能(延迟方面)吗
class MyModelProps(db.Model):
property_1 = db.StringProperty(indexed=True)
property_2 = db.StringProperty(indexed=True)
我会查询:
SELECT * from MyModelProps where property_1 = 'a' and property_2 = 'b'
和综合指数
indexes:
- kind: MyModelProps
properties:
- name: property_1
- name: property_2
使用 MyModelList 对第一个示例的查询似乎更难回答,因为与第二个示例(我假设 1 个二进制搜索以找到开始,然后阅读)。
如果 MyModelList.listed_props 的索引需要跨多个 bigtable tablet 分片,这将特别复杂。
我可以期望两者的性能(延迟方面)大致相同吗?
PS:我问的原因是因为我喜欢使用 MyModelList.listed_props 因为更新现有实体要便宜得多,因为我可以摆脱很多复合索引。