当我们在CouchDB中需要服务器端查询时,使用列表函数可能会有所不同。但问题出在这里:假设我们需要来自两种不同文档类型的字段。我们可以使用以下查询获取这两个文档:
views: {
myview: {
map: function(doc){
if (doc.type === 'mytype') {
emit([doc.mykey, 0], {
field1: doc.field1
});
return emit([doc.mykey, 1], {
_id: doc.theLinkedDoc
});
}
}
}
}
如果我们在没有include_docs=true
参数的情况下调用此视图函数,则会立即获取该参数。如果我们添加include_docs=true
,获取结果会持续10秒左右(因为文档相对较大)
另一方面,我们可以使用list函数来减少结果。我们需要include_docs=true
才能创建有用的列表函数。
我的期望是,由于list函数的总体结果很小(就像我们在没有include_docs=true
选项的情况下获取原始视图一样很小),应该立即获取此结果 plus list函数的执行时间(比如2秒),但list函数的整体结果是在大约20或30秒内获取的。
是否有任何技术可以有效地减少这种查询?