【发布时间】:2021-11-26 09:12:46
【问题描述】:
默认情况下,在 cosmosDb 中,文档中的所有属性都已编入索引,那么我为什么要对分区键进行研究,而对索引的搜索也能完美运行且无需任何成本?
我有一个 cosmosDb,其中包含一百万个这样的文档,每个文档都包含一个数组,分区键是“tankId”,例如:
{
"id": "67acdb16-80dd-4a6c-a5b0-118d5f5fdb97",
"tankId": "67acdb16-80dd-4a6c-a5b0-118d5f5fdb97"
"UserIds": [
"905336a5-bf96-444f-bb11-3eedb65c3760",
"432270f5-780f-401b-9772-72ec96166be1",
"cfecdf7e-5067-46b1-ab4e-25ca7d597248"
],
}
如果我对这百万个不是分区键而是索引属性的文档的“UserIds”进行请求,则只需要 3.32 RU !!!哇。
SELECT *
FROM c
WHERE ARRAY_CONTAINS(c.UserIds, "905336a5-bf96-444f-bb11-3eedb65c3760")
做这种请求是个好习惯吗?我有点担心我的设计。
【问题讨论】:
标签: azure azure-cosmosdb azure-cosmosdb-sqlapi