View 如何使用键优化查询?

View 如何使用键优化查询?,view,map,key,pouchdb,View,Map,Key,Pouchdb,在couchdb中,我有一个非常简单的映射函数,因此我可以通过tripid高效地查找列表: //作者_tripid.js 功能(doc){ 如果(文件类型=“列表”){ for(文档tripid中的变量tripid){ emit(doc.tripid[tripid],null) } } } 目的是通过tripid对列表进行索引。通过指定一个键(tripid),可以通过tripid检索列表 在数据库中,我可以在db.query调用中使用大致相同的map函数 然而,实际上我不想返回所有列表,然后

在couchdb中,我有一个非常简单的映射函数,因此我可以通过tripid高效地查找列表:

//作者_tripid.js
功能(doc){
如果(文件类型=“列表”){
for(文档tripid中的变量tripid){
emit(doc.tripid[tripid],null)
} 
}
}
目的是通过tripid对列表进行索引。通过指定一个键(tripid),可以通过tripid检索列表

在数据库中,我可以在db.query调用中使用大致相同的map函数

然而,实际上我不想返回所有列表,然后用tripid过滤它们。这似乎效率很低。我不确定数据库的视图技术。视图是在查询时创建和使用的,所以我猜PockDB并没有真正应用映射来创建索引。我想这就像Couchdb中的临时视图,所以效率可能不存在

如有专家意见,将不胜感激

谢谢,Matt

有一个实现增量视图的开放平台


您是正确的-现在,PockDB在数据库中的每个文档上运行map reduce,每次您调用
query
,因此性能不是很好。对于小型数据库来说,这很好,但对于大型数据库来说,这显然是一个问题。

PockDB的
query
接口传递
options.key
。这将是下一个版本

  • 如果您连接到远程沙发,它会将参数传递到远程视图,从而由沙发本身进行优化
  • 对于本地数据库,但在其着陆时不会更改接口。寓意:只要使用界面,不要担心它,除非你碰到了性能墙

量化“多大才算太大”问题的另一个有趣之处是。

在这种情况下,什么是大分贝?@GiovanniP“大”的定义并不难理解。在这种情况下,我们有一个线性算法(在根目录下,它只是一个for循环/forEach调用),因此随着记录数量的增加,查询数据库所需的时间也会增加。根据应用程序的不同,我猜任何超过几百条记录都会开始显示明显的延迟。