2012-02-22 3 views

答えて

2

を、最も簡単かつ安価で簡単に使用することですget()

DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); 
datastore.get(KeyFactory.createKey(kind, long)) 

のGet(1つの読み出し動作)クエリが安い()

+0

上記は、エンティティ全体をフェッチするため、キーのみのクエリではありません。 –

+0

はい、問題はありません。エンティティの存在をテストするために、最も安い方法(おそらく最も速い)。 –

+0

エンティティのサイズによっては、これが最速ではない可能性があります。私はデータストアの帯域幅の使用料が今はなくなったと考えています。だから、私が思うに安いことが保証されています。 – mjaggard

3

はい、可能です。

このような何か試してみてください:キーで1つの実体の有無をチェックするための

DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); 
Query gaeQuery = new Query(entityName); 
gaeQuery.setKeysOnly();  
gaeQuery.addFilter("__key__", FilterOperator.EQUAL, key); 
PreparedQuery pq = datastore.prepare(gaeQuery); 
List<Entity> results = pq.asList(FetchOptions.Builder.withLimit(1)); 

Key elementKey = null; 
if (results.size() == 1) { 
    elementKey = results.get(0).getKey(); 
} 
0

存在をテストしたい場合は、Victorの提案を使用することができますが、代わりに代わりに:

return datastore.prepare(gaeQuery) 
    .countEntities(FetchOptions.Builder.withLimit(1)) > 0;