除了列表函数之外,还有什么方法可以减少大CouchDB连接吗?

除了列表函数之外,还有什么方法可以减少大CouchDB连接吗?,couchdb,Couchdb,当我们需要CouchDB中的服务器端查询时,使用列表函数可以起到作用。但问题是:假设我们需要来自两种不同文档类型的一些字段。我们可以通过以下查询获取这两个文档: views: { myview: { map: function(doc){ if (doc.type === 'mytype') { emit([doc.mykey, 0], { field1: doc.field1 });

当我们需要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\u docs=true
参数,则会立即获取它。如果我们添加
include_docs=true
,获取结果将持续10秒左右(因为文档相对较大)

另一方面,我们可以使用列表函数来减少结果。我们需要
包括_docs=true
,以便创建一个有用的列表函数

我的期望是,由于列表函数的总体结果很小(很小,就像我们在没有
include\u docs=true
选项的情况下获取原始视图一样),因此应该在加上列表函数的执行时间(例如2秒)后立即获取此结果但是list函数的整体结果大约在20或30秒内获取


是否有任何技术可以有效地减少此类查询?

对于视图的第一次查询,您可能会遇到延迟,因为视图索引是第一次按需计算的。(后续查询将随着文档的添加/更新/删除而增量更新,因此会更快)此外,您的文档有多大?您必须拥有与分配给数据库服务器的资源成比例的巨大文档,才能对性能产生显著影响。这取决于具体情况,但每个文档的大小只有几百字节(可能是千字节),每个视图有600-700个文档。我知道第一个索引的创建过程,但是这个延迟是稳定的,并且比其他类似视图的第一个索引计算时间要长。