allDocs 之间的区别,在关系袋中找到性能
Difference between allDocs, find performance in relational-pouch
我正在开发 Ionic 应用程序。我将 PouchDB 与 relational-pouch localy 和 Cloudant remote 结合使用。我运行陷入了几个性能问题。目前数据库中只有 200 个文档。同步工作正常。
当我在初始同步完成后 运行 这段代码时,在我看来,我得到了奇怪的结果。 allDocs 在 60 毫秒后快速完成。 180 毫秒后找到。我在这里使用的是从 pouchdb 中查找,而不是 relational-pouch。这是互联网。我为字段 data.type 创建了一个索引。这是预期的行为吗?我希望视图会更快,因为基本上所有内容都应该使用索引预加载/更快。也许我没有做正确的索引。请指教
测试脚本
console.time("allDocs");
this.dataService.db.allDocs({
include_docs: true,
startkey: "supplier_2",
endkey: "supplier_2\uffff"
}).then(articles=>{
console.timeEnd("allDocs");
console.log(articles);
console.time("find");
this.dataService.db.find({
selector: {'data.type': 'supplier'},
}).then(suppliers=> {
console.timeEnd("find");
console.log(suppliers);
}).catch(err=> {
console.log(err);
});
});
索引
this.db.createIndex({
index: {
fields: ['data.type'],
name: 'dataTypeIndex',
ddoc: 'dataType'
}
})
感谢您的支持! :)
查询数据最快的方法是使用主索引(文档 _id)。
当您使用带有 startKey 和 endKey 的 allDocs 时,您基本上是在使用主索引来搜索数据。如果您使用像 ${doc.type}::${someId} 这样的智能 ID,那么在使用 allDocs 时按类型搜索应该会更快。
另一方面,查找查询(或芒果查询)使用通过 createIndex 构建的二级索引。在无法根据文档 ID 执行查询的情况下使用它们。这些通常较慢并且有一些缺点,例如您不能使用正则表达式来搜索字段中的某些文本。
本文可能对您有所帮助(尤其是 "Use and abuse your doc IDs" 部分)
https://pouchdb.com/2014/05/01/secondary-indexes-have-landed-in-pouchdb.html
我正在开发 Ionic 应用程序。我将 PouchDB 与 relational-pouch localy 和 Cloudant remote 结合使用。我运行陷入了几个性能问题。目前数据库中只有 200 个文档。同步工作正常。
当我在初始同步完成后 运行 这段代码时,在我看来,我得到了奇怪的结果。 allDocs 在 60 毫秒后快速完成。 180 毫秒后找到。我在这里使用的是从 pouchdb 中查找,而不是 relational-pouch。这是互联网。我为字段 data.type 创建了一个索引。这是预期的行为吗?我希望视图会更快,因为基本上所有内容都应该使用索引预加载/更快。也许我没有做正确的索引。请指教
测试脚本
console.time("allDocs");
this.dataService.db.allDocs({
include_docs: true,
startkey: "supplier_2",
endkey: "supplier_2\uffff"
}).then(articles=>{
console.timeEnd("allDocs");
console.log(articles);
console.time("find");
this.dataService.db.find({
selector: {'data.type': 'supplier'},
}).then(suppliers=> {
console.timeEnd("find");
console.log(suppliers);
}).catch(err=> {
console.log(err);
});
});
索引
this.db.createIndex({
index: {
fields: ['data.type'],
name: 'dataTypeIndex',
ddoc: 'dataType'
}
})
感谢您的支持! :)
查询数据最快的方法是使用主索引(文档 _id)。 当您使用带有 startKey 和 endKey 的 allDocs 时,您基本上是在使用主索引来搜索数据。如果您使用像 ${doc.type}::${someId} 这样的智能 ID,那么在使用 allDocs 时按类型搜索应该会更快。
另一方面,查找查询(或芒果查询)使用通过 createIndex 构建的二级索引。在无法根据文档 ID 执行查询的情况下使用它们。这些通常较慢并且有一些缺点,例如您不能使用正则表达式来搜索字段中的某些文本。
本文可能对您有所帮助(尤其是 "Use and abuse your doc IDs" 部分)
https://pouchdb.com/2014/05/01/secondary-indexes-have-landed-in-pouchdb.html