2017-08-03 166 views
0

假设你想从rethinkdb获得3条第一条记录。这是很容易与做:如何从rethinkdb中快速获取N个最后记录?

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) 

有一个巨大的在时差:

首先一个与.Limit在golang需要:63.28276ms

第二个与.Slice在golang需要:1.028439202s

orderBy某些时间戳使所有事情变得更慢。

所以你可以看到它从速度的角度来看只是疯狂的。该查询在数据库中的26 000个文档上执行。 我需要一些关于如何解决这个问题的想法。

回答

0

所以,我已经尝试了很多东西,最后N记录会很慢,所以我以不同的方式处理问题。我做了一些脚本,把最后N记录每20second s在file/redis,然后我从Go web应用程序快速读取记录。

相关问题