我的 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
内得到结果。
最佳答案
您可以使用get
或getAll
访问主索引。因此,如果您将第一个查询重写为 r.db('rethinkdb_faker').table('contacts').get(3453)
它应该会快得多。
关于node.js - 通过主键搜索,RethinkDB 查询并没有变得更快。有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31575319/