8

データ ストア内の 10000 個のオブジェクトのコレクションから 2000 年から 2010 年までのアイテムを選択するクエリを作成するにはどうすればよいでしょうか。

GQLで次のようにできることを私は知っています:

select * from MyObject limit 10 offset 2000

ドキュメントによると、エンジンを使用するoffsetとすべての行がフェッチされますが、返されないため、 の値に線形に対応する方法でクエリが実行されますoffset

もっと良い方法はありますか?ROWNUM他のタイプのデータストアで行うことができるような疑似列の使用など。

4

2 に答える 2

6

結果をキャッシュする以外に、オフセットを使用して効率的にページングする方法はありません。ただし、データストア カーソルを使用して、「ブックマーク」タイプのアプローチを使用してページングを実装できます。

于 2010-04-16T13:08:25.107 に答える
2

カーソルを使用する以外に、ソート順アプローチを使用することもできます。例えば:

SELECT * FROM MyObject ORDER BY field LIMIT 10;

最初の 10 個のオブジェクト、次に次の 10 個のオブジェクトなど。

SELECT * FROM MyObject WHERE field > largestFieldValueFromPreviousResult ORDER BY field LIMIT 10;

別の適切なフィールドがない場合、フィールドはキーになることさえあります。より完全な例を次に示します。

http://code.google.com/appengine/articles/paging.html

于 2010-04-18T12:17:51.593 に答える