cosmosdb, почему индекс не используется в функции статистического подсчета? - PullRequest
0 голосов
/ 28 октября 2018

На следующий запрос можно получить ответ непосредственно из индекса, так как «раздел» - это ключ раздела (и в политике индекса по умолчанию в качестве индекса диапазона).

"SELECT value count(1) FROM c WHERE c.partition = 'xxx'"

Однако показатели запросов показывают, что индекс не используется.Вместо этого он влечет за собой большие расходы на RU ...

Есть идеи, в чем может быть проблема?

var client = DatabaseClient.Client;
        IDocumentQuery<dynamic> query = client.CreateDocumentQuery(
            UriFactory.CreateDocumentCollectionUri(DatabaseClient.DatabaseName, DatabaseClient.CollectionName),
            "SELECT count(1) FROM c WHERE c.partition = 'xxx',
            new FeedOptions
            {
                PartitionKey = new PartitionKey("xxx"),
                PopulateQueryMetrics = true,
                MaxItemCount = -1,
                MaxDegreeOfParallelism = -1,
                EnableCrossPartitionQuery = false
            }).AsDocumentQuery();
        FeedResponse<dynamic> result = await query.ExecuteNextAsync();

        // Returns metrics by partition key range Id 
        IReadOnlyDictionary<string, QueryMetrics> metrics = result.QueryMetrics;

Метрики показывают, что использование индекса составляет 0.

...