2017-12-03 5 views
0

CosmosDB 팀의 누군가가 이것을 분명히 알기를 바랍니다. 예를 들어DocumentDB는 결과가 없을 때 청구합니다.

, 우리는 공식 '성능 팁'에서 예를 살펴 경우 :

IDocumentQuery<Document> query = (from doc in client.CreateDocumentQuery(colSelfLink) where doc.Id == "myId" select document).AsDocumentQuery(); 
      Document myDocument = null; 
      while (query.HasMoreResults) 
      { 
       FeedResponse<Document> res = await query.ExecuteNextAsync<Document>(); 
       if (res.Count != 0) { 
        myDocument = res.Single(); 
        break; 
       } 
      } 

심판 : https://azure.microsoft.com/en-us/blog/performance-tips-for-azure-documentdb-part-1-2/

ref2 용 : 위의 예에서 https://docs.microsoft.com/en-us/azure/cosmos-db/performance-tips

, 만약 우리 쿼리가 결과를 반환하지 않는다는 것을 의미합니다. 즉, HasMoreResults은 처음부터 거짓입니다. 2 가지 질문 :

  1. ExecuteNextAsync이 전혀 실행되지 않으면 요청 수수료가 있습니까? (HasMoreResults은 항상 거짓 임)?

  2. 질문 1)에 대한 답변이 '예'인 경우 요청 수수료를받는 방법은 무엇입니까? ExecuteNextAsync 항상 적어도 한 번 실행됩니다 있도록

답변

1

IDocumentQuery 구현은 항상 첫 번째 통화에 대한 trueHasMoreResults 반환합니다. 모든 쿼리는 서버에 제출되고 최소 RU 요금이 부과됩니다.

+0

감사합니다. 좋아, 아마도 조금 부정확했다. 세부 사항을 추가하겠습니다. 두 번째'HasMoreResults'가'false'를 반환하면'ExecuteNextAsync'가 두 번 실행되지 않습니다.'HasMoreResults'가 추가 요청 비용을 부과합니까? 그렇다면 그 정보를 얻는 방법? –

+0

또는 실제로, 첫 번째 것은 아마도 기본적으로 'true'이고 그 이후의 것은'ExecuteNextAsync' 호출에 의해 설정됩니다. 그럴까요? –

+0

예, "처음에는 기본값이 true이고 이전 ExecuteNextAsync 호출로 후속 값이 설정됩니다". HasMoreResults는 (lastContinuationToken! = null) –