即使JSON已编制索引,查询中也需要分区键

Ton*_*nen 5 azure-cosmosdb

我正计划使用Cosmos Db(文档Db),我试图了解查询,索引和分区如何相互关联.

如何在Azure Cosmos中分区和扩展Db谈论分区键和其他文档表明分区键+ id =文档的唯一ID.但是,Azure Cosmos Db中的SQL查询和SQL语法表明它提供了JSON文档的自动索引,而无需显式模式或创建二级索引.

我知道分区键对于可伸缩性和数据存储方式很重要.但是,如果我们考虑搜索是分区键类似额外的filter/where子句?所有文档都被编入索引,因此我可以执行以下查询:

SELECT * 
FROM Families
WHERE Families.address.state = "NY"
Run Code Online (Sandbox Code Playgroud)

我是否仍应指定分区键或指示在使用此SQL查询语法时允许跨分区查询的方式?

Mik*_*kov 6

您的第一个链接为此提供了答案:

对于分区集合,您可以使用PartitionKey对单个分区运行查询(尽管Cosmos DB可以从查询文本中自动提取),而EnableCrossPartitionQuery可以运行可能需要针对多个分区运行的查询.

所以,是的,您需要指定WHERE将对单个分区运行查询的子句,或者在查询选项中设置EnableCrossPartitionQuerytrue.