如何筛选indexedDB中的100K条记录?

时间:2019-04-14 13:41:21

标签: javascript indexeddb dexie

我有一个IndexedDB存储,其中有100k个名称字段。 如何根据名称过滤包含一些子字符串?

我尝试使用indexeddb getall(),但导致CPU使用率增加。 使用游标进行迭代花费了很多时间。 尝试过dexie js。

执行这种操作是否有好的实现方法?

1 个答案:

答案 0 :(得分:1)

如果为名称字段建立索引,则可以进行前缀搜索,但是普通索引不足以进行完整的子字符串搜索。

const db = new Dexie ('dbname');
db.version(1).stores({things: 'id, name'});

function query(prefix) {
  return db.things
    .where('name').startsWith(prefix)
    .toArray();
}

此示例在'name'字段上定义了一个索引,查询函数将使用IDBKeyRange来表示'name'索引上的getAll(),该IDBKeyRange代表以给定字符串开头的所有名称。