我尝试了这样的查询:
SELECT VALUE COUNT(1) FROM c WHERE <a few equality conditions and a 'date greater than' condition>
我也尝试过
SELECT * FROM c WHERE <same conditions>
令我惊讶的是,
SELECT *
版本的成本低于SELECT VALUE COUNT(1)
:
有谁能解释为什么会发生这种情况吗?
虽然这是一个非常古老的问题,但仍然添加这个答案,以防有人来这里搜索。
我也面临同样的问题
select count(1) FROM c WHERE <same conditions>
,select count(*) FROM c WHERE <same conditions>
和select count(c.id) FROM c WHERE <same conditions>
都采取了比做更多的RU select * FROM c WHERE <same conditions>
对此有 2 个解决方案(我们通过点击和试用以及与 Cosmos Db 支持团队的多次电子邮件交流发现)
select top 1 c.id FROM c WHERE <same conditions>
并更改代码以将其用作二进制输出select count(c.indexedField) from c where c.indexedField = "xyz"
Cosmos DB 团队提到他们正在修复它,因此将来我们可能不需要自己进行此优化。我希望他们在文档中的某个地方提到过它。