【发布时间】:2017-01-19 17:10:29
【问题描述】:
数据表是我数据库中最大的表。我想查询数据库,然后按条目时间戳对其进行排序。常识是先过滤,然后再操作数据。
queryA = r.table('data').filter(filter).filter(r.row('timestamp').minutes().lt(5)).orderBy('timestamp')
但这是不可能的,因为过滤器会创建一个边表。该命令会引发错误 (https://github.com/rethinkdb/rethinkdb/issues/4656)。
所以我想知道我是否将orderBy 放在首位,如果随着时间的推移数据变得庞大,这会导致性能崩溃。
queryB = r.table('data').orderBy('timestamp').filter(filter).filter(r.row('timestamp').minutes().lt(5))
目前我在查询后订购,但通常数据库在这些过程中更快。
queryA.run (err, entries)->
...
entries = _.sortBy(entries, 'timestamp').reverse() #this process takes on my local machine ~2000ms
问题:
查询这些按timestamp排序的条目的最佳方法是什么(性能方面)。
编辑: db 使用一个分片运行。
【问题讨论】:
标签: rethinkdb rethinkdb-javascript