进行选择或插入操作的IndexedDB(JavaScript版本)的复杂性是什么?索引是否为“索引”?是排序还是散列?例如,当我们仅使用IDBKeyRange。时,是否要花费O(1),O(log(n))或O(n)的时间?
IDBKeyRange.bound怎么样?是先对索引排序然后再进行选择吗?
IDBObjectStore.add()的性能如何?
对于index.openCursor(),索引是否预先排序?
我们正在使用IDBObjectStore.createIndex()创建索引。 如果问题1中的答案是“是”(这意味着索引已建立索引),那么如何使用已建立索引或未建立索引的选项创建索引?换句话说,我选择一些要排序或散列的索引,而另一些则不然。我们有这个选择吗?
答案 0 :(得分:1)
该规范未规定性能特征。假设使用B-tree来实现是合理的,因此假设操作为O(log n),但是您需要在浏览器中测试实现。如果特定的浏览器在常规操作上的效果不佳,则可能值得将其报告为问题。
Q1.1 IndexedDB(Javascript版本)的复杂性是什么 选择还是插入?索引是否为“索引”?是排序还是散列?
索引已排序。 https://w3c.github.io/IndexedDB/#index-construct
Q1.2 IDBKeyRange.bound怎么样?是先对索引排序然后再进行选择吗?
查找与排序后的索引相反。
Q1.3 IDBObjectStore.add()的性能如何?
假设B树,O(log n)
Q1.4对于index.openCursor(),索引是否已预先排序?
是的。
尽管从技术上讲,实现可以延迟创建索引-规范不需要特定的性能或实现,只是结果难以区分。
问题2:...如何使用已建立索引或未建立索引的选项创建索引?换句话说,我选择一些要排序或散列的索引,而另一些则不然。我们有这个选择吗?
否-API没有公开这样的选项。