node.js - 加快我的 cloudant 查询速度

标签 node.js couchdb cloudant database-tuning

我想知道是否有人可以就我下面的 cloudant 查询提供一些建议。现在,针对包含 50,000 个文档的数据库执行操作需要花费 20 秒以上的时间 - 我怀疑我可以获得比这更好的速度。

查询的目的是查找属性“searchCode”等于特定值加上特定 ID 的进一步列表的所有文档。

searchCode 和 _id 都已编入索引 - 有什么想法为什么我的查询会花费这么长时间/我可以采取哪些措施来加快速度?

mydb.find({selector: {"$or":[{"searchCode": searchCode},{"_id":{"$in":idList}}]}}, function (err, result) {
   if(!err){
      fulfill(result.docs);
   }
   else{
      console.error(err);
   }
});

谢谢, 詹姆斯

最佳答案

您可以尝试对查询进行单独的调用

  • 查找 searchCode =“某个值”的文档
  • 查找 ID 与 ID 列表匹配的文档

第一个可以通过 find 调用和查询来实现,如下所示:

{ selector: {"searchCode": searchCode} }

第二个可以通过点击数据库的 _all_docs 来实现端点,将 id 列表作为 keys 参数传递,例如

GET /db/_all_docs?keys=["a","b","c"]

您可能会发现并行运行两个请求并合并结果可以带来更好的性能。

关于node.js - 加快我的 cloudant 查询速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41162387/

相关文章:

go - 如何通过 ID 以外的字段从 Kivik 获取文档

json - 如何在 couchdb 中索引多维数组

couchdb - CouchDB 中的 View 如何存储在磁盘上?

javascript - 使用 SSL 证书执行 axios 请求 React JS

couchdb - CouchDB 0.11主要新特性有哪些

javascript - 在 couchdb reduce 中使用 "eval"- 这有多危险?

javascript - 如何让cloudantDb.search返回所有记录而不是限制25条和书签

node.js - bcrypt 不适用于 lambda 无服务器

node.js - Dialogflow的Fullfilment逻辑无法获取Google帐户信息

javascript - Node.js 和 Express : wait for asynchronous operation before responding to HTTP request