Javascript IndexedDB索引的性能:选择并插入 问题1: 问题1.1

Javascript IndexedDB索引的性能:选择并插入 问题1: 问题1.1,javascript,performance,indexeddb,Javascript,Performance,Indexeddb,IndexedDB(Javascript版本)执行select或insert的复杂性是什么?索引是否已“索引”?它是排序的还是散列的?例如,当我们仅使用IDBKeyRange.only时,它需要O(1)、O(log(n))或O(n)时间 问题1.2 IDBKeyRange.bound怎么样?是先对索引排序,然后再进行选择吗 问题1.3 IDBObjectStore.add()的性能如何 问题1.4 对于index.openCursor(),索引是否提前排序 问题2: 我们正在使用IDBObjec

IndexedDB(Javascript版本)执行select或insert的复杂性是什么?索引是否已“索引”?它是排序的还是散列的?例如,当我们仅使用IDBKeyRange.only时,它需要O(1)、O(log(n))或O(n)时间

问题1.2 IDBKeyRange.bound怎么样?是先对索引排序,然后再进行选择吗

问题1.3 IDBObjectStore.add()的性能如何

问题1.4 对于index.openCursor(),索引是否提前排序

问题2: 我们正在使用IDBObjectStore.createIndex()创建索引。
如果问题1中的答案是“是”(这意味着索引已编入索引),那么如何使用已编入索引或未编入索引的选项创建索引?换句话说,我选择了一些要排序或散列的索引,而其他索引则没有。我们有这样的选择吗?

该规范不要求性能特征。假设一个实现使用了操作O(logn),这是合理的,但是您需要在浏览器中测试实现。如果某个浏览器在常见操作中表现不佳,则值得将其作为一个问题报告

问题1.1 IndexedDB(Javascript版本)的复杂性是什么 选择还是插入?索引是否已“索引”?它是排序的还是散列的

索引已排序

问题1.2 IDBKeyRange.bound如何?是先对索引排序,然后再进行选择吗

查找是根据已排序的索引进行的

问题1.3 IDBObjectStore.add()的性能如何

假设B-树,O(logn)

Q1.4对于index.openCursor(),索引是否提前排序

虽然从技术上讲,实现可以懒散地创建索引,但该规范不需要特定的性能或实现,只是结果无法区分

问题2:。。。如何使用已索引或未索引的选项创建索引?换句话说,我选择了一些要排序或散列的索引,而其他索引则没有。我们有这个选择吗


否-API没有公开这样的选项。

对于问题2,这意味着对于每个索引,它都有自己的“指针”排序表,指向每个项目?是的。定义一个索引。这实际上是一个(indexKey,primaryKey)对的排序列表。对于问题2,可能我的问题还不够清楚。我的意思是,我们是否可以选择“索引”某个特定列。答案应该是肯定的,对吗?以前我认为我们必须通过添加索引来添加列。现在我发现,我们可以通过在每个项中添加json键来添加列。“…我们是否可以选择“索引”特定列。答案应该是“是”,对吗?”-您可以在有效键值内的任何属性上创建索引。如果您存储一个对象,例如{a:123,b:{c:{d:{hello}}},并且您创建了一个索引,其键路径为“b.c.d”,那么索引中将有一个索引项,其索引键为“hello”。如果把它看作是有帮助的列,那就去做吧。它能以相反的顺序创建索引吗?我知道我们可以用光标在两个方向上阅读。然而,当该表显示在Chrome的inspect->application->indexeddb中时,它只是升序。它能按降序显示吗?