Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 在indexedDB中,是否有可能将;其中(值1、值2……值2)中的列“;呼叫_Html_Indexeddb - Fatal编程技术网

Html 在indexedDB中,是否有可能将;其中(值1、值2……值2)中的列“;呼叫

Html 在indexedDB中,是否有可能将;其中(值1、值2……值2)中的列“;呼叫,html,indexeddb,Html,Indexeddb,我想使用indexedDB实现此搜索: where CustomerName in ('bob', 'fred'... 'nancy') 我可以看到两种可能性: 1) 只需在对象存储上打开游标,然后在整个表中循环,手动检查记录是否位于('bob','fred','nancy')) 2) 使用index,发出多个调用来索引openCursor('bob')、openCursor('fred') openCursor和openCursor都采用了一种似乎不允许搜索多个非连续值的方法 还有其他更有效

我想使用indexedDB实现此搜索:

where CustomerName in ('bob', 'fred'... 'nancy')
我可以看到两种可能性:

1) 只需在对象存储上打开游标,然后在整个表中循环,手动检查记录是否位于('bob','fred','nancy'))

2) 使用index,发出多个调用来索引openCursor('bob')、openCursor('fred')

openCursor和openCursor都采用了一种似乎不允许搜索多个非连续值的方法


还有其他更有效的方法吗

最快的方法可能是对要搜索的键进行排序,在第一个键处打开一个光标,
IDBCursor。继续执行
,直到获得该键的所有值,然后再执行IDBCursor。前进到要搜索的下一个键。重复操作,直到完成所有键。这样,您只需一个光标即可获得所有值,但您可以快速跳过不关心的值。

您的任何建议都有效

#1的性能改进是首先对键列表进行排序(例如,使用
indexedDB.cmp()
实现比较功能),然后在第一个键上打开光标(例如“bob”)。然后,在迭代过程中,一旦看到“bob”之后“fred”之前的键,您就可以
continue('fred')
跳过中间的记录。这样可以避免迭代表中您不关心的记录

最新的Chrome/Firefox/Safari还支持getAll(),这是#2上的一个变体,可以一次获取给定键的所有记录(例如,通过
getAll('nancy')
),而不必迭代光标