node.js - 通过主键搜索,RethinkDB 查询并没有变得更快。有什么问题吗?

标签 node.js rethinkdb

我的 contacts 表中填充了 50k 条记录,以便我可以对性能进行基准测试。

引起我注意的是这些查询大约需要相同的时间才能完成:

查询 1:

r.db('rethinkdb_faker').table('contacts').filter({"id":3453}).limit(1)

查询 2:

r.db('rethinkdb_faker').table('contacts').filter({"name":"contact3453"}).limit(1)

它们在 I5 1.7ghz Ubuntu 服务器上大约需要 160ms 才能完成。

我确实希望查询 1 运行得更快,因为我读到主索引是自动考虑在内的。我还了解到 id 会自 Action 为主键。而且,我没有找到任何配置主键的选项。

我做错了什么还是这是预期的?

编辑

感谢 @mlucy 的回答,在相同的配置下,我现在可以在 13ms 内得到结果。

最佳答案

您可以使用getgetAll访问主索引。因此,如果您将第一个查询重写为 r.db('rethinkdb_faker').table('contacts').get(3453) 它应该会快得多。

关于node.js - 通过主键搜索,RethinkDB 查询并没有变得更快。有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31575319/

相关文章:

database-administration - 复制/复制RethinkDB数据库的最简单方法?

image - 使用 RethinkDB 存储图像

angular - 在 RethinkDB 中通过 Horizo​​nIO 查找记录不返回结果

node.js - 如何在 Node.js 中创建数据驱动测试

javascript - 为什么使用 Node.js 的 i18n 不断删除和替换我的语言变量?

node.js - 使用 arangodb 和 nodejs 进行简单查询

node.js - 使用feathersjs rethinkdb适配器通过非sql选择不同的

javascript - 我使用 Promise.push( PromiseFunction( params ) 将 Promise 推送到 forEach 内的数组,但 PromiseFunction 会立即执行

javascript - socket.io 事件和自定义事件

database-design - RethinkDb 中唯一的整数计数器