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将“日期”参数更新为实际日期,以便于澄清。