如何快速从rethinkdb获取N个最后记录?

时间:2017-08-03 10:13:30

标签: rethinkdb gorethink

假设你想从rethinkdb获得3条第一条记录。这很容易做到:

objects = r.db("db").getAll(val, {index:"index"}).limit(N)

但是为了获得最后N个记录,你必须得到计数,对象的数量然后像这样切片:

count = r.db("db").getAll(val, {index:"index"}).count(N)
objects = r.db("db").getAll(val, {index:"index"}).slice(count - N, count)

时间差异很大:

首先在golang中使用.Limit:63.28276ms

第二个在golang中使用.Slice:1.028439202s

执行orderBy某个时间戳会使所有事情变得更慢。

因此,从速度的角度来看,它只是疯了。此查询在数据库中的26 000个文档上执行。 我需要一些关于如何解决这个问题的想法。

1 个答案:

答案 0 :(得分:0)

所以,我尝试了很多东西,并且获得最后N条记录会很慢,所以我以不同的方式处理问题。我做了一些脚本,在N中每隔20second放置最后file/redis条记录,然后我快速阅读Go网络应用中的记录。