加速我的cloudant查询

时间:2016-12-15 10:54:15

标签: 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);
   }
});

谢谢, 詹姆斯

1 个答案:

答案 0 :(得分:1)

您可以尝试单独调用查询

  • 找到searchCode ='some value'
  • 的文档
  • 找到ids与ids列表匹配的文档

第一个可以通过find调用和类似的查询来实现:

{ selector: {"searchCode": searchCode} }

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

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

您可能会发现并行运行这两个请求并合并结果可以提高性能。