pouchdb.query需要更多时间

时间:2016-01-11 11:00:18

标签: cordova pouchdb

我的小袋数据库中有大约50个文件。我正在加载角度服务时查询数据库。我知道我们可以使用 alldocs 方法,它比查询方法快得多。但在我的情况下, allDocs 是不够的,因为每个文档都有lastUpdatedTime,以毫秒为单位。基于lastUpdatedTime,我将查询数据库以获取按lastUpdatedTime排序的新记录。但是alldocs方法没有根据文档字段值对文档进行排序的选项。我的doc设计类似于var byTimestampDoc = this.createDesignDoc('by_timestamp', function (doc) { if (doc.objType == "message") { emit(doc.lastUpdated); } }); db.put(byTimestampDoc)

现在查询大约需要9781.726ms才能在Android中加载应用程序时返回行,但在iOS中则需要不到3秒的时间。任何人都可以帮助我改善表现。

1 个答案:

答案 0 :(得分:1)

如果您只是想知道哪些文档最近更新过,您实际上可以使用内置的changes() API(docs here),这与allDocs()一样快。

查询往往很慢,因为1)map()函数必须为数据库中的每个文档运行(例如objType不是'message'的文档{1}},)和2)它只会在您query()时更新。

因此,如果您的数据库中包含频繁更改的文档,则每个query()都会读取每个已更改的文档,因为您上次query()它,这就是为什么它很慢。