600RU все еще очень-очень плохо. Это не решение.
Причиной такой плохой производительности является то, что ваш запрос не может использовать индексы, а полное сканирование никогда не может масштабироваться. Будучи плохим сейчас, оно будет ухудшаться по мере роста вашей коллекции.
Вам нужно убедиться, что ваш запрос может использовать индекс, чтобы анализировать только минимально возможные количества документов. Трудно предложить точное решение, не зная распределения данных по значениям orderdata.status
и orderdata._attachments.length
, но вы должны учитывать:
- Опустите OR . Запросы «того или иного» не могут использовать индекс. CosmosDB использует только один индекс для каждого запроса. Если
orderdata.status
значения достаточно избирательны, вы получите намного лучшую производительность RU / 2, выполнив 2 вызова и объединив результаты в клиенте.
- Предварительно расчитайте свое состояние на отдельное свойство и поместите на него индекс . Да, это дублирование данных, но несколько лишних байтов ничего вам не стоят, в то время как RU и производительность обойдутся вам в деньгах, а также в работе с пользователями.
Вы также можете комбинировать их, например, имея 2 запроса и сохраняя только количество массивов. Подумайте о своих данных и протестируйте их.