Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 加快我的cloudant查询_Node.js_Couchdb_Cloudant_Database Tuning - Fatal编程技术网

Node.js 加快我的cloudant查询

Node.js 加快我的cloudant查询,node.js,couchdb,cloudant,database-tuning,Node.js,Couchdb,Cloudant,Database Tuning,我想知道是否有人可以为我下面的cloudant查询提供一些建议。现在对一个包含50000个文档的DB执行需要20秒以上的时间——我想我可能会获得比这更好的速度 查询的目的是查找属性为“searchCode”的所有文档,该属性等于一个特定值加上另一个特定ID列表 搜索代码和_id都被编入了索引-你知道为什么我的查询会花费这么长时间吗/我能做些什么来加速它吗 mydb.find({selector: {"$or":[{"searchCode": searchCode},{"_id":{"$in":i

我想知道是否有人可以为我下面的cloudant查询提供一些建议。现在对一个包含50000个文档的DB执行需要20秒以上的时间——我想我可能会获得比这更好的速度

查询的目的是查找属性为“searchCode”的所有文档,该属性等于一个特定值加上另一个特定ID列表

搜索代码和_id都被编入了索引-你知道为什么我的查询会花费这么长时间吗/我能做些什么来加速它吗

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

您可以尝试分别调用查询

  • 查找搜索代码为'some value'的文档
  • 查找ID与ID列表匹配的文档
第一个可以通过
find
调用和如下查询实现:

{ selector: {"searchCode": searchCode} }
第二种方法是点击数据库的端点,将ID列表作为
参数传入,例如

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

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

谢谢Glynn-我已经将两者分开,我遇到的问题似乎是调用的ID部分-searchcode查询几乎立即返回,但ID调用仍需要15秒以上-我将对此进行调查Furthi Glynn-我实际上按照您的建议使用了modules.list方法,该方法必须调用GET/db/_all_docs,但是我现在遇到了一个问题,作为查询参数,我传入的密钥数量超过了限制。有什么想法吗?我看到一些文档建议您可以通过在coach\u db上发布一篇帖子来检索所有的\u文档,以提交大量密钥-在cloudant上也是这样吗?我解决了这个问题-感谢您正确地运行它们,因为单独的查询效率更高。我最终还是按照我的建议,将所有带有密钥的文档发布到/db/_,这对我的一大组密钥非常有用