【问题标题】:How can filter through 100K records in indexedDB?如何过滤 indexedDB 中的 10 万条记录?
【发布时间】:2019-09-04 15:40:51
【问题描述】:

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

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

有没有好的实现来做这种操作?

【问题讨论】:

  • 您是否为名称字段编制索引?使用 dexie 的索引 filter() 应该可以正常工作

标签: javascript indexeddb dexie


【解决方案1】:

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

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

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

此示例在“名称”字段上定义了一个索引,并且查询函数将使用代表以给定字符串开头的所有名称的 IDBKeyRange 对“名称”索引执行 getAll()。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-01
    • 2023-01-07
    • 2021-11-27
    • 1970-01-01
    相关资源
    最近更新 更多