我希望来自CosmosDB团队的人能够澄清这一点。
例如,如果我们看一下官方的“性能提示”中的示例:
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个问题:
如果ExecuteNextAsync
根本没有运行,是否需要收费? (因为HasMoreResults
总是假的)?
如果对问题1)的回答是“是”,那么如何获得该请求?
答案 0 :(得分:2)
第一次调用Long
实现总是返回SSRRepository
Long
,因此ExecuteNextAsync将始终至少执行一次。每个查询都提交给服务器,并产生最小的RU费用。