На следующий запрос можно получить ответ непосредственно из индекса, так как «раздел» - это ключ раздела (и в политике индекса по умолчанию в качестве индекса диапазона).
"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.