我想知道是否有人可以在下面的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);
}
});
谢谢, 詹姆斯
答案 0 :(得分:1)
您可以尝试单独调用查询
第一个可以通过find
调用和类似的查询来实现:
{ selector: {"searchCode": searchCode} }
第二个可以通过点击数据库的_all_docs端点来实现,将id列表作为keys
参数传递,例如。
GET /db/_all_docs?keys=["a","b","c"]
您可能会发现并行运行这两个请求并合并结果可以提高性能。