1

INフィルターは 30 項目に制限されています。その制限を無効にすることは可能ですか? または、実行可能な/推奨される回避策はありますか?

4

2 に答える 2

4

その制限を無効にすることはできません。これが理由です。

INクエリを実行するとwhere x in [n1, n2, n3]、実際に発生するのは、3つの個別のクエリがデータストアに送信されることです。

where x = n1
where x = n2
where x = n3

次に、結果のキーのリストがマージされ、重複が削除されて、最終結果が得られます。

リスト内の各アイテムはin個別の実際のデータストアクエリを作成し、GQLクエリごとに30個の実際のデータストアクエリの制限があるため、リスト内のアイテムは30個に制限されます。

于 2012-09-25T09:07:46.903 に答える
0

前述のように、クエリは 30 個の並列の個別のクエリで解釈されるため、クエリで取得できるアイテムは 30 個のみです。回避する方法は、以下の例のように 30 アイテムのシリアル リクエストを作成することです。

offset = 0
item_count = len(keys)
result = []
while offset < item_count:
   data = Entity.all().filter('key IN', keys[offset:30])
   result.extend(data)
   offset += 30 
return result
于 2012-09-28T17:23:01.583 に答える