为什么 RethinkDB 的计数操作这么慢?

Why RethinkDB's count operation is so slow?

我正在尝试对 RethinkDB 中的某些查询进行基准测试任务。我真的没有很好地回答一个问题 为什么 RethinkDB 的 count() 操作这么慢?

我有一个包含 2GB 数据的查询:

r.db("2GB").table("table").between(40, r.maxval, {index:"price"})

查询在 5 毫秒内执行 但是一旦我想计算像

这样的项目数
r.db("2GB").table("table").between(40, r.maxval, {index:"price"}).count()

用了超过 6 秒 每个使用计数操作的查询都非常慢。我见过很多 issues in github 但无法得到确切的原因。

更新: 不只是 between() 而是所有其他类似 filter .... count() 非常慢

当您调用 between 时,您会得到一个游标,它会在您迭代时从磁盘上延迟加载数据。因此 return 游标所需的时间量是读取第一批数据所需的时间量,而不是读取所有数据所需的时间量。 count,另一方面,在 return 之前必须先查看整个 table,所以它花费的时间与 table.[=12] 的大小成正比=]