Чтобы jQuery DataTable
работал правильно, мне нужны общие записи, содержащиеся в наборе данных, который затем фильтруется по функциям DataTables
(то есть: сколько записей на странице, столбец сортировки, порядок сортировки и т. д.).
Но проблема в том, что каждый раз, когда пользовательский интерфейс вызывает страницу с записями, также необходимо возвращать общее количество записей, и я обнаружил, что это довольно дорого с точки зрения RU. (Сейчас у меня около 750 записей, и подсчет общего количества записей стоит 118 единиц за каждое изменение страницы). Дело в том, что может быть доступно ТОННЫ страниц.
Вот что я делаю, чтобы подсчитать:
var query = Client.CreateDocumentQuery<int>(CollectionURI, "select value count(1) from c", new FeedOptions { PartitionKey = new PartitionKey(partitionKey) })
.AsDocumentQuery();
response = await query.ExecuteNextAsync<int>();
return response.ToList()[0];
Это работает с точки зрения производительности, но с точки зрения RU не очень.
Есть ли лучший способ узнать размер раздела?
Про CountAsync
не знал. Я пробовал и вроде дешево в пересчете на RU. Спасибо.
Я разместил это как ответ. Вы можете принять это, если оно вам помогло.
В SDK SQL API есть метод под названием CountAsync
, который выполняет всю магию внутри себя.
Стоимость таких операций разная, поэтому их использование обойдется дешевле.
Спасибо за то, что поделились.
Когда я добавил метод CountAsync в Космонавт, я использовал метод CountAsync SDK. Он не возвращает плату за RU, но CosmosDB имеет специальные сборы для специальных операций, поэтому, вероятно, будет дешевле. Вы можете проверить это в аналитике CosmosDB.