Azure cosmosdb 为什么计算结果如此昂贵?

Azure cosmosdb 为什么计算结果如此昂贵?,azure-cosmosdb,azure-cosmosdb-sqlapi,Azure Cosmosdb,Azure Cosmosdb Sqlapi,如果我运行一个查询,例如下面的查询: SELECT DISTINCT c.vin, c.year-model-trim, c.make FROM c WHERE c.make= @make // make is partition key AND c.manufactured > '2020-01-01' 我将返回25个文档,其中的查询统计数据类似于: 申请费用5.79卢比 检索到的文档计数70 检索到的文档大小为25736字节 输出文件计数26 输出文档大小1423字节 索

如果我运行一个查询,例如下面的查询:

SELECT 
DISTINCT c.vin,
c.year-model-trim, 
c.make
FROM c
WHERE c.make= @make    // make is partition key
AND c.manufactured > '2020-01-01'
我将返回25个文档,其中的查询统计数据类似于:

  • 申请费用5.79卢比
  • 检索到的文档计数70
  • 检索到的文档大小为25736字节
  • 输出文件计数26
  • 输出文档大小1423字节
  • 索引命中文档数25.9
  • 索引查找时间0.6毫秒
  • 文件加载时间0.590000000000001毫秒
  • 查询引擎执行时间0.26毫秒
  • 系统功能执行时间0毫秒
  • 用户定义的函数执行时间0毫秒
  • 文件写入时间0.01毫秒
  • 往返旅行1
但是,如果我只想获得该查询的计数结果,我可以将上述查询嵌套在计数查询中:

SELECT COUNT(m.vin)
FROM
(
    SELECT 
    DISTINCT c.vin,
    c.year-model-trim, 
    c.make
    FROM c
    WHERE c.make= @make    // make is partition key
    AND c.manufactured > '2020-01-01'
)m
我的RU从~5到~150

  • 申请费用147.79卢比
  • 显示结果1-1
  • 检索到的文档计数为0
  • 检索到的文档大小为0字节
  • 输出文档计数1
  • 输出文档大小为79字节
  • 索引命中文档计数0
  • 索引查找时间124.9700000000001毫秒
  • 文件加载时间0毫秒

为什么在Cosmos中获得结果集的计数就RU的使用而言如此昂贵?

您是否打算在
和c.manufactured>中检查
'@date'
而不是参数
@date
?@AndrewMorton既不
COUNT(*)
也不
COUNT(DISTINCT…)
目前是否支持Cosmos语法。@AndrewMorton COUNT(1)在抽象意义上并不昂贵,但正如OP所述,“简单”廉价子查询结果的计数结果非常昂贵,他正在试图理解原因。@DavidRubin我认为昂贵查询的索引查找时间越长,可能与
计数(m.vin)
显然是成本的原因有关,并且认为可能是
m.vin
而不是
*
可能很重要。如果
vin
非空
,或者在Cosmos中不可用,这会有什么不同吗?@AndrewMorton将“日期”参数更新为实际日期,以便于澄清。