【发布时间】:2016-02-29 11:35:12
【问题描述】:
在 rDBMS 中,您可以在关系的索引列上 select DISTINCT value。它应该仅扫描 INDEX 以减少 I/O 和时间。
问题:我如何在 indexedDb 中做同样的事情?
研究:我知道 mongodb 会这样做,但我找不到 indexedDb 的任何信息。我希望getAllKeys 会有所帮助,但它只为我列出了 PK 值。我的情况?想象一家拥有一百万行的商店。一列是欧盟国家,它被索引。每个国家/地区的分布都非常不同。我想获得一个国家的行(一个国家不能有行,而其他国家不能有很多行)。我赋予用户按国家/地区执行搜索的能力。但是他有很多“空”按钮——没有行的国家代码。相反,我想给他 Store 中存在的县代码。所以我这样做:
var k = objstore.index("ISO");
var r = k.openCursor(IDBKeyRange.bound("A", "Z"));
var disp = [];
r.onsuccess = function(e) {
var cursor = e.target.result;
if(cursor) {
disp[cursor.key] = (disp[cursor.key] || 0) + 1 ;
cursor.continue();
} else {
console.log(disp);
}
但它很慢。它在整个 Store 上运行(至少看起来是这样 - 我使用 e.target.result.key 而 value 也可用。这让我想起了 IOT 行为,但不是索引......
无论如何,谁知道告诉我 - 我可以使用 index 想要的方式吗?..
我是 IndexedDb 的 rDBMS 新手。对不起,如果我说完全废话
【问题讨论】:
标签: indexeddb