在IndexedDB中查询

时间:2013-12-03 00:04:05

标签: indexeddb

我在Mobile Web中使用'IndexedDB'。 我想查询。     a> = 10且a&lt; = 20且b&gt; = 30且b <= 40 我尝试过如下。     //创建复杂索引。     var store = thisDB.createObjectStore(“table”,{autoIncrement:true});     store.createIndex( “myidx”,[ “一”, “B”],{独特:假});     //按绑定查询     var range = IDBKeyRange.bound([10,30],[20,40]);     cursor = index.openCursor(range);     cursor.onsuccess = function(e){         var res = e.target.result;         if(res.key [1]&gt; = 30&amp;&amp; res.key [1]&lt; = 40){             的console.log(res.value);         };         res.continue();     };

这是最好的吗? 我想在没有比较的情况下得到一次。 更重要的是,速度慢。 数据为1,000,约为100,000。 大约需要10秒或更长时间。 太慢了。 有什么建议? WebSQL如何? 我担心。

1 个答案:

答案 0 :(得分:0)

您的查询有两个范围查询。在这种情况下,无法对排序合并键加入。它在WebSQL上也会很慢。

由于两个变量都是数字,因此您可以使用geohash来获得快速查询。

另一种方法是将查询结果保存到主键的排序数组中。结果只是在两个结果上查找交集。