我在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如何? 我担心。
答案 0 :(得分:0)
您的查询有两个范围查询。在这种情况下,无法对排序合并键加入。它在WebSQL上也会很慢。
由于两个变量都是数字,因此您可以使用geohash来获得快速查询。
另一种方法是将查询结果保存到主键的排序数组中。结果只是在两个结果上查找交集。