2010-12-04 8 views
2

可能性の重複:
Fetching a random record from the Google App Engine Datastore?GQLランダム録音

にはどうすれば効率的にGQLを使用してランダムなデータベースレコードを選ぶことができますか?

例:私はQuotes Modelを持っており、毎回ランダムな見積もりを選ぶ必要があります。 ID属性は、本番サーバーのすべての挿入時に自動的にインクリメントされることは保証できません。

答えて

4

自動生成IDは一意であることが保証されていますが、順次または厳密には増加しません。

stackoverflowに約alreadymanyquestionsがあります。

いくつかの一般的な解決策があります:あなたがそれらを作成するよう

  • はクローゼット レコードの はその後、乱数を選択し、(クエリを経由して) を見て、あなたのエンティティの乱数 を生成し、保存しますそれに(s)それを(s)。
  • のエンティティIDを確実に実装して、 が「密集」していることを確認し、キーを使用して既知の範囲内で を取得します。
  • のランダムリストを周期的に生成し、エンティティを返します。 これらのリストからエンティティを返します。これは、 という形で、エンティティが破棄されるか、 がオフになるか、実際のリストとして が返されます。

あなたが何をしますかではなく、はランダムオフセットを選択します。データストアがスキップされたすべてのエンティティをスキャンする必要があるため、オフセットは非常に非効率的です。