Учитывая следующий SQL, ManufacturerIdUpperCase является ключом раздела, а значение в нижнем регистре передается в качестве подсказки, чтобы направить Cosmos в правильный раздел."Boat.OwnerIdUpperCase" в проиндексированном свойстве.Будет ли Cosmos использовать ownerId, чтобы сузить сканирование до подмножества документов для этого владельца, или использование двух других вызовов UPPER требует полного сканирования коллекции?
SELECT * FROM boat
WHERE boat.ManufacturerIdUpperCase= @ManufacturerId
AND UPPER(boat.Owner.Type)= UPPER(@OwnerType)
AND boat.OwnerIdUppererCase= @BoatOwnerId)
AND UPPER(boat.BoatType) = UPPER(@BoatType)
Я пытаюсь решить,Мне нужно сохранять строчную копию каждого свойства, включенного в различные предложения WHERE, или, если я могу сделать это, для одного из оставшихся преобразований UPPER для индексированного свойства, которое сократит область набора данных, так что сканирование требуется толькона полученном подмножестве, а не на всем разделе?
Я прочитал старые сообщения, подобные приведенным ниже, и запустил SQL в песочнице, как было предложено.В простом сценарии я вижу тот же результат, что и автор.Тем не менее, мой сценарий работы является более сложным, как описано выше.
DocumentDB: влияние на производительность встроенных строковых функций (например, UPPER)