加速我的 cloudant 查询

Speeding up my cloudant query

我想知道是否有人可以就我下面的 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 = 'some value'
  • 处找到我的文档
  • 查找 ID 与 ID 列表匹配的文档

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

{ selector: {"searchCode": searchCode} }

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

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

您可能会发现 运行 并行请求和合并结果可为您提供更好的性能。