如何从知道键的IndexedDb中有效地提取大量记录?

ee7vknir  于 2022-12-09  发布在  IndexedDB
关注(0)|答案(1)|浏览(154)

所以我的麻烦是,我有一个集合的某些记录的关键字,我在我的IndexedDb在Chrome浏览器中保存,存储的大小(又名表)是近200 000,关键字集是约5 000.
没有办法使用索引,因为密钥非常随机。
什么是最快的方法来拉这5000条记录对应的关键字我有?
我目前的解决方案是在数据库中的所有记录中移动光标,检查每个键是否都在集合中。

4dbbbstv

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]);
};

相关问题