所以我的麻烦是,我有一个集合的某些记录的关键字,我在我的IndexedDb在Chrome浏览器中保存,存储的大小(又名表)是近200 000,关键字集是约5 000.没有办法使用索引,因为密钥非常随机。什么是最快的方法来拉这5000条记录对应的关键字我有?我目前的解决方案是在数据库中的所有记录中移动光标,检查每个键是否都在集合中。
4dbbbstv1#
我目前的解决方案是在数据库中的所有记录中移动光标,检查每个键是否都在集合中。只读取具有匹配键的记录(假设“键”是指对象存储的键),而不是阅读每个记录:
const sortedKeys = [1, 2, 3]; const output = []; const range = IDBKeyRange.bound(sortedKeys[0], sortedKeys[sortedKeys.length - 1]); let i = 0; const request = objectStore.openCursor(range); request.onsuccess = (event) => { const cursor = event.target.result; if (!cursor) { console.log(output); return; } output.push(cursor.value); i += 1; cursor.continue(sortedKeys[i]); };
1条答案
按热度按时间4dbbbstv1#
我目前的解决方案是在数据库中的所有记录中移动光标,检查每个键是否都在集合中。
只读取具有匹配键的记录(假设“键”是指对象存储的键),而不是阅读每个记录: