我想知道是否有人可以就我下面的 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/