gpt4 book ai didi

javascript - 优化 IndexedDB 查询

转载 作者:行者123 更新时间:2023-12-03 03:24:05 25 4
gpt4 key购买 nike

我正在使用 Dexie.JS 来处理 IndexedDB。目前,有一个愚蠢的查询写为:

return db.events.each((element) => {
let d = element.cause.data;
if (d.hasOwnProperty('deleted') && (false == d.deleted) &&
d.hasOwnProperty('abbreviation') &&
d.hasOwnProperty('contents') && (d.abbreviation == key)) {
snippet = d.contents;
}
}).then(() => {
return snippet;
});

它工作正常,但在大型数据库上速度慢得像糖蜜。我应该在由 db.events 组成的集合上运行每个集合并应用 where 吗?这会提高性能吗?

谢谢

最佳答案

是的,如果假设您的“key”变量是可索引类型:字符串、数字、日期、TypedArray 或数组,您可以像这样优化查询:

首先,确保在 db.events 上添加索引“cause.data.abbreviation”:

db.version(2).stores({
events: 'yourPrimaryKey, cause.data.abbreviation'
});

然后,像这样重写查询:

return db.events
// Let indexedDB sort out all items matching given key:
.where('cause.data.abbreviation').equals(key)
// Filter the rest manually using Collection.filter():
.filter(element => {
let d = element.cause.data;
return (d.hasOwnProperty('deleted') && (false == d.deleted) &&
d.hasOwnProperty('contents'));
})
// Execute the query and only return the first match:
.first();

关于javascript - 优化 IndexedDB 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46431344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com