【发布时间】:2019-09-02 04:17:29
【问题描述】:
我想知道是否有任何方法可以使用 AltLink 而不是 SelfLink 进行查询?
SELECT * FROM c
--WHERE c._alt = 'dbs/DefaultDb/colls/DefaultColl/docs/cd9d67d5-b82e-4ec5-aad3-91e784906f6e'
WHERE c._self = 'dbs/Rr4MAA==/colls/Rr4MAOW90GI=/docs/Rr4MAOW90GIBAAAAAAAAAA==/'
更新:
我正在寻找一种在 SQL 中使用 AltLink 的方法的原因是由于通过其 id 对文档进行简单查询的问题将随着集合的增长而不断增加成本。 .net SDK 允许使用 AltLink 来获取文档,成本几乎总是在 1 到 1.5 RU 之间。
【问题讨论】:
-
只是好奇你为什么需要做这样的查询。你想解决什么问题?
-
如果您可以对集合运行查询,那么除了 id 之外您不需要其他任何东西来查找文档,因此 alt 链接的想法实际上没有意义,但我可能会遗漏一些东西
-
David Makogon,问题是我的收藏有 10,000 个文档。如果我通过那里的 id 查询文档,则 RU 成本为 277。如果我通过 SelfLink 查询,成本为 1.2 RU。如果我通过文档 ID 和文档类型(它的枚举)查询,则 RU 成本为 2.4。使用 SelfLink 和 AltLink 据说是检索文档的最快和最便宜的方法。
-
@user6196566 - 尝试按文档 id 进行 read (当您知道 id 时,查询总是比读取成本更高)。这(阅读)是阅读文档的最便宜的(RU-wise)。不是查询。
-
Nick Chapsas,很高兴收到您的来信!在过去的几个月里,我在 cosmos db 中进行原型设计时,已经阅读了您在 stackoverflow 上的许多帖子。我的问题 Nick 是 .net SDK 有一个名为 ReadDocumentAsync 的方法。此方法通过其 Id 返回单个文档。我无法让 cosmos 模拟器高效地返回相同的记录。使用 SelfLink 似乎最快,但要使用 self 链接,我必须知道要查找的 RId uim。目前我只在子文档中存储父母 ID,而不是父母的 RId。
标签: azure-cosmosdb azure-cosmosdb-sqlapi