pouchdb.query 需要更多时间

pouchdb.query is taking more time

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


现在,在 Android 中加载应用程序时,查询 return 行大约需要 9781.726 毫秒,但在 iOS 中只需要不到 3 秒。任何人都可以帮助我提高性能。

如果你只是想知道最近更新了哪些文档,你实际上可以使用 built-in changes() API (docs here),就像快如 allDocs().

查询往往很慢,因为 1) map() 函数必须 运行 用于 数据库中的每个文档(例如 objType 不是 'message',),并且 2) 它只会在您 query() 它的那一刻更新。

因此,如果您有一个包含 frequently-changing 个文档的数据库,每个 query() 都会读取自您上次 query() 以来更改过的所有文档,这就是它速度慢的原因。