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

时间:2017-05-23 15:16:53

标签: azure-cosmosdb

我打算使用Cosmos Db(文档Db),我试图了解查询,索引和分区如何相互关联。

How to partition and scale in Azure Cosmos Db谈到分区键和其他文档表明分区键+ id =文档的唯一ID。但是后来SQL Query and SQL syntax in Azure Cosmos Db它提供了JSON文档的自动索引,而不需要显式模式或创建二级索引。

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

SELECT * 
FROM Families
WHERE Families.address.state = "NY"

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

2 个答案:

答案 0 :(得分:5)

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

  

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

所以,是的,你需要指定WHERE子句,它将使查询针对单个分区运行,或者在查询选项中将EnableCrossPartitionQuery设置为true

答案 1 :(得分:0)

您不必再这样做了,EnableCrossPartitionQuery 现在默认设置为 true。这意味着如果您不跳过查询中的分区键,Cosmos 不会抱怨。

更多信息here