2013-05-05 3 views
0

AppEngine Datastore 쿼리의 크기를 가져 오는 가장 효율적인 방법은 무엇입니까?AppEngine Datastore 쿼리의 크기를 가져 오는 가장 효율적인 방법

검색된 엔티티 수가 N이 될 것 같은 필터가있는 쿼리가 있다고 가정 해보십시오. 전체 데이터 저장소 검색을 수행하지 않고도 N 값을 얻을 수 있습니까?

내가 찾은 가장 효율적인 방법은 따라서, "키 전용"쿼리를 사용하는 것입니다 : 더 좋은 방법이

Query q = new Query("MyKind").setKeysOnly(); 
q.setFilter(someFilter); 
PreparedQuery pq = datastore.prepare(q); 
long N = pq.asList().size(); 

있습니까? 크기 N이 특정 값을 초과 하는지를 알고 싶으면 더 효율적인 방법이 있습니까?

감사합니다.

답변

1

왜 countEntities를 사용하지 않습니까? https://developers.google.com/appengine/docs/java/javadoc/com/google/appengine/api/datastore/PreparedQuery#countEntities(com.google.appengine.api.datastore.FetchOptions)

샤드 카운터에서 직접 카운트를 추적 할 수도 있습니다. 또 다른 생각은 예상치 만 필요하다면 더 빠른 쿼리를 사용하면됩니다.

+0

D' oh! 나는 그것을 어떻게 놓칠 수 있습니까? 그렇다고하더라도 데이터 스토어 할당량 관점 및 대기 시간 관점에서 볼 때 비용이 적을 것으로 예상합니까? – aez

+0

당신은 확실히 시험해야 할 것입니다.하지만 제 추측으로는 꽤 가깝습니다. 당신은 약간의 정보 (키 목록 대신 숫자)를 돌려 줄 것이지만 그것은 가깝습니다. 잠복 시간이 거의 필요하지 않은 경우에는 계산대를 조사해야합니다. – jcjones1515

+0

countEntities의 제한은 1000입니다. –

관련 문제