Google App Engineのデータストアに数百万のレコードが含まれている可能性があるため、複数の文字列に一致するレコードを取得するための最良の方法を見つけようとしています。Google App Engineのクエリの最適化
例えば、私は以下のモデルを持っていると言う:
文字列名 文字列レベル のInt私も」のリストと一致与えられた「レベル」のすべてのレコードを返す必要が
スコア名前 "。
これは基本的に、特定のレベル(「レベル」)のプレーヤー(「名前」)のハイスコア(「スコア」)のリストです。名前リストには名前が1つまたは2つしかない可能性があります。 )。私はあなたの友人だけを含む高得点リストを構築するために、 "名前"によって選手のリストのための任意の "レベル"のすべてのスコアを見つけるしたい。
「名前」のリストをループして、そのレベルの高得点ごとにクエリを実行できますが、これが最善の方法であるかどうかはわかりません。 SQLでは、これを行うための単一(複雑な)クエリを作成することができました。
データストアのサイズを考えると、私は、クエリによって実行されるはずのPythonコードを実行する時間を無駄にしないようにしたいと思います。
"レベル"は数字ではなくレベル名ではないので、文字列でなくIntでなければなりませんが、それが重要かどうかはわかりません。
私の心配は、Player.all()。filter(...)クエリが数十万のレコードを返す可能性があることです。明らかに、誰かによって行われるような作業ですが、データベースエンジンがそれを行うために最適化されているかもしれません(mysqlはPHPよりもむしろ)。その作業をGAEデータベースにオフロードする方法がなく、その動作方法がわからないかもしれません。 –