私がモデルを持っていると仮定して
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 を使用した最初の例のクエリは、2 番目の例 (1 つのバイナリを想定している) と比較して、データストアが listed_props インデックスをそれ自体とマージする必要があるため (開始点を見つけてからインデックスをマージするために 2 つのバイナリ検索を想定しています)、答えるのが難しいようです。検索して開始点を見つけてから読んでください)。
MyModelList.listed_props のインデックスを複数の Bigtable タブレットで分割する必要がある場合、これは特に複雑になります。
この 2 つでほぼ同じパフォーマンス (レイテンシに関して) を期待できますか?
PS: 私が尋ねている理由は、多くの複合インデックスを取り除くことができるため、既存のエンティティを更新する方がはるかに安価であるため、MyModelList.listed_props を使用したいからです。