Cosmos db sql;ключ раздела в параметрах канала или запрос ключа раздела? - PullRequest
0 голосов
/ 30 января 2019

В чем разница между предоставлением ключа раздела в .net core sdk FeedOptions и его использованием в качестве критерия в запросе?Например, если вы хотите перечислить все элементы в данном ключе раздела.Нужно ли указывать параметры подачи или ключ раздела в критериях?

Ключ раздела в критериях

SELECT * FROM c where c.PartitionKey = "some partition key"

.net core с параметрами подачи

var allDocs = await (from d in client.CreateDocumentQuery<Document>(UriFactory.CreateDocumentCollectionUri(databaseId, "TestCollection"), 
                     new FeedOptions { PartitionKey = new PartitionKey("some partition key") })
                     select d)
                    .AsDocumentQuery<Document>().ExecuteNextAsync<Document>();

Вопрос возник, когдаЯ создал собственную политику индексации, в которой ключ раздела исключен из индексации.Следовательно, при поиске стоимости RU / s он, по-видимому, выполняет сканирование при исключении вместо поиска по индексу при использовании политики индексирования по умолчанию.

Означает ли это, что если вам нужны перекрестные запросы, вам нужно проиндексироватьключ раздела, и если вам нужно только выполнить запрос в рамках заданных ключей раздела, вы можете исключить его - если вы дадите ключ раздела в FeedOptions?

1 Ответ

0 голосов
/ 31 января 2019

Я из инженерной команды CosmosDB.

В вашем сообщении заданы два вопроса, ортогональных друг другу:

  1. Указываем ли мы PartitionKey в feedOptions илив запросе?

Это не должно иметь значения.Указание его либо в FeedOptions, либо в самом запросе поможет направить его на правильный раздел для выполнения.

Нужно ли добавлять ключ разделения в политику индексации для эффективного выполнения запроса?

Вы всегда должны добавлять ключ раздела в политику индексирования.Это гарантирует, что во время выполнения запроса индекс используется для выбора документов для ключа (ключей) раздела, указанных в запросе.

...