Dexie 2.0.4
JSFiddle:https://jsfiddle.net/n3xsokay/
我试图弄清楚如何使用DexieJS在多个值上过滤IndexedDB表。尽管上面提到的小提琴并不是我真正需要的,但它很接近。我有一个包含四列的表:
我用如下表设置了索引:
db.version(1).stores({
friends: '++id,name, age, height'
});
我用(当前)1000个随机ish值填充表以进行测试。我需要能够基于多个值构建动态查询。例如:
在小提琴中,我正在使用WHERE子句来执行任何过滤器的第一部分,然后使用过滤器函数过滤结果集合。
var coll = db.friends.where('age').above(90).filter(function (friend) {
return friend.height > 5 && friend.shoeSize === 12;
});
log('have coll');
return coll.toArray();
它可以工作,但是方法太慢。我尝试过使用过滤器的不同组合,但似乎没有什么不同
最终,它将用于具有10,000条记录的自动完成/提前输入功能,每个查询需要15-20秒。仅对1000条记录使用过滤器功能实现该过程就需要花费几秒钟。获取初始集合的速度非常快(当获取集合时,小提琴会注销“ have coll”并且几乎是瞬时的),但是应用过滤器功能会花费很长时间。
我研究了复合索引,它们看起来可以用于除“ startsWith”过滤之外的所有内容。
是否可以在WHERE子句中包含startsWith类型过滤器?
谢谢
TTE