在RethinkDB中,我需要在兩個表之間執行連接(表示has-and-belongs-to-many關係),然後對連接的結果進行排序。可能有數十萬甚至數百萬的結果,所以我需要對它們進行有效的分類。有沒有一種有效的方法來對RethinkDB中的連接結果進行排序?
理想情況下,我想用索引orderBy()
。但是orderBy()
can only use an index when called on a table和.eqJoin()
returns a stream or an array。
下面是我正在使用的查詢的示例。我想有一個給定的主題對話:
r.table('conversations_topics')
.getAll('c64a00d3-1b02-4045-88e7-ac3b4fee478f', {index: 'topics_id'})
.eqJoin('conversations_id', r.table('conversations'))
.map(row => row('right'))
.orderBy('createdAt')
這裏使用的未建索引orderBy()
開始變得太慢時,主題包含了幾千年的對話,並會在100,000徹底打破由於RethinkDB的數組大小限制。這個數據庫中的主題很容易包含數十萬甚至數百萬次的對話,所以這是不可接受的。
我只需要這個查詢一次返回一小部分結果(比如說25),但我需要這些結果才能排序,所以我不能限制,直到排序後。有任何想法嗎?