azure - azure-cosmosDB 中的 ARRAY_CONTAINS 与 JOIN

标签 azure azure-cosmosdb

我们计划摄取到 DocumentDb 中的 JSON 文档如下所示......

[
{"id":"id1","LastName": “user1”, "GroupMembership":["g1","g2"]},
{"id":"id2","LastName": “user2”, "GroupMembership":["g1","g4","g5"]},
{"id":"id3","LastName": “user3”, "GroupMembership":["g3","g4","g2"]},
…
]

我们想要回答诸如统计“g1”或“g2”组成员的所有用户等查询……。用户数量非常大(几百万)…… 实现此查询并使用索引并避免任何扫描的最佳方法是什么...... 我应该使用 ARRAY_CONTAINS 还是 JOIN(ARRAY_CONTAINS 内部使用索引还是进行扫描)...

选项1)

SELECT VALUE COUNT(1) FROM Users WHERE ARRAY_CONTAINS(Users.GroupMembership, "g1") or ARRAY_CONTAINS(Users.GroupMembership, "g2")

选项2)

SELECT VALUE COUNT(1) FROM Users JOIN Membership in Users.GroupMembership WHERE Membership = "g1" or Membership = "g2"

最佳答案

两个查询都应以相同的方式使用索引,但与 JOIN 相比,ARRAY_CONTAINS 可能会提供更好的执行时间。您可以根据本文使用查询指标来分析这两个查询:https://learn.microsoft.com/en-us/azure/cosmos-db/documentdb-sql-query-metrics#query-execution-metrics

关于azure - azure-cosmosDB 中的 ARRAY_CONTAINS 与 JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47512978/

相关文章:

azure - 通过 DevOps Pipeline 将 Docker 镜像上传到 ACR

Azure 物联网中心框架 3.5

c# - Cosmos DB 在查询中不遵守 Json.Net CamelCaseNamingStrategy

arrays - 在 Cosmos DB 中查询嵌套数组

c# - 如何从 Azure 函数中的声明性绑定(bind)引用 {rand-guid} 值?

c# - Service Fabric Owin 管道中的 WsFederation 身份验证不起作用

azure - 是否可以从 OHMS 监控 Cosmos 指标并设置警报

c# - 按类型属性查询 Cosmos DB

c# - 获取 .NET Google API RefreshToken - 访问被拒绝

java - 将 Java 函数输出到 DocumentDB