Производительность запроса DESC по сравнению с запросом ASC в базе данных Cosmos - PullRequest
0 голосов
/ 31 октября 2019

У меня есть два запроса в моей базе данных. Первый смотрит на последнюю добавленную стоимость с некоторыми фильтрами.

SELECT TOP 1 * 
FROM c 
WHERE c.type = "TYPE" 
    AND c.userInfo.email = "someEmail" 
    AND c.userInfo.Id = "someUserID" 
    AND c.metadata.status.type = "someStatus" 
    AND ORDER BY c.metaData.creation_timestamp DESC

Второе то же самое, но оно ищет самое старое значение.

SELECT TOP 1 * 
FROM c 
WHERE c.type = "TYPE" 
    AND c.userInfo.email = "someEmail" 
    AND c.userInfo.Id = "someUserID" 
    AND c.metadata.status.type = "someStatus" 
    AND ORDER BY c.metaData.creation_timestamp ASC

Выполнение первого занимает около 50 единиц запроса, но для второго - около 4000. Есть ли способ улучшить производительность второго без изменения структуры хранимых объектов?

1 Ответ

0 голосов
/ 31 октября 2019

По умолчанию Azure CosmosDB индексирует все в ваших документах JSON. Если вы используете только несколько атрибутов в своих предложениях WHERE и ORDER BY, было бы неплохо немного подправить, чтобы сэкономить на throughput.

Да ASC будет стоить большинство RU, поскольку он просматривает все документы в коллекции, для улучшения вы можете указать ключ разделения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...