Первый подход не рекомендуется, если вы не знаете каждое возможное значение ключа раздела, которое есть в ваших документах, и вы не готовы написать некоторый параллельный код запроса.Это эффективно, только если вы хотите запросить несколько разделов, но не все.
Включение EnableCrossPartitionQuery
- это рекомендуемый подход, если вы хотите запросить все разделы, но в идеале вы хотите использовать его как можно меньше.
CosmosDB знает, является ли определение ключа раздела частью запроса, и ограничит его результаты разделами для этого запроса, если указаны значения ключа раздела.
Это означает, что если вы напишите что-то вродеselect * from c where c.partitionKey = 'something' || c.partitionKey = 'somethingelse'
и вы включите опции EnableCrossPartitionQuery
, ваш запрос будет выполнен только для тех двух разделов, которые являются частью вашего запроса (something
и somethingelse
).