假设你想从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个文档上执行。 我需要一些关于如何解决这个问题的想法。
答案 0 :(得分:0)
所以,我尝试了很多东西,并且获得最后N
条记录会很慢,所以我以不同的方式处理问题。我做了一些脚本,在N
中每隔20second
放置最后file/redis
条记录,然后我快速阅读Go网络应用中的记录。