IN
フィルターは 30 項目に制限されています。その制限を無効にすることは可能ですか? または、実行可能な/推奨される回避策はありますか?
質問する
362 次
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 に答える