質問

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

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

select * from MyObject limit 10 offset 2000

による ドキュメンテーション, 、を使用するとき offset エンジンは引き続きすべての行をフェッチし、それらを返さないでください。そのため offset.

もっと良い方法はありますか?擬似の使用など ROWNUM 他の種類のデータストアでできるような列。

役に立ちましたか?

解決

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

他のヒント

カーソルの使用に加えて、ソートオーダーアプローチを使用することもできます。例えば:

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top