2017-08-03 15 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) 

巨大ながあります時間の差:golangで.Limitと

第1取ります63.28276ms

golangで.Sliceを持つ2つ目は取ります1.028439202s

Doing orderByタイムスタンプによっては、すべての処理がさらに遅くなります。

これは、スピードの観点から見ればわかります。このクエリは、データベース内の26,000のドキュメントで実行されます。 これを解決する方法についていくつか考えが必要です。

答えて

0

私は多くのことを試しましたが、最後にNのレコードが遅くなるので、別の方法で問題にアプローチしています。私はNfile/redis内のすべての20second秒を記録し、最後入れているいくつかのスクリプトをやっていますし、私はその囲碁Webアプリケーションからレコード速く読みます。

関連する問題