IDB查询进阶颜色查询及查询机制
IDB查询进阶
引入问题:当我的查询条件设置为颜色时,那么查询结果将会是什么?IDB的查询机制是怎样的?
我先做个实验,
颜色查询,上边界:白色,结果如下
颜色查询,下边界:白色,结果如下:
结果出来了,我们分析一下,为什么会有这样的结果?
按道理,颜色名称是没有可比性的,平常谈论颜色,更多是讨论哪种颜色好看,那IDB是依据什么来筛选数据的?
实际上,它是先把字符(包括汉字)转化为对应ASCII码值,因为ASCII码都是数字,因此就有了可比性,然后再依据过滤器四个API的筛选法则把符合条件的记录查出来。
验证一下:
棕:26837(ASCII码)
白:30333(ASCII码)
红:32418(ASCII码)
蓝:34013(ASCII码)
黑:40657(ASCII码)
在白色为上边界时(包含边界),小于等于30333,白、棕
在白色为下边界时(包含边界),大于等于30333,白、红、蓝、黑
由于实验是包括边界的,所以实验结果与验证结果是吻合的,可以确认IDB的筛选机制是基于ASCII码的。
总结一下:从这里可以看出,其实IDB的查询功能是极其有限的,远低于我对它的期望,说白一点,IDB的查询功能对于实际应用来说是没意义的,好像我想找出价格低于80000的记录,IDB会把1000000、3260000也找出来,因为1000000的首位为1,3260000的首位为3,它们都低于80000的8,所以被找出来了,实际上这些结果不是我们想要的。再深究一层,为什么会设计成这样,原因我估计跟IDB,甚至说整个WEB离线存储技术的一个特点不无关系,不管是过去的Cookie、现在的LocalStorage、SessionStorage、IDB,它们无一例外都将数据保存为字符串类型,就算IDB是为存储大规模数据而设计的,但是它最终还是将数据序列化为字符串才保存的。那么我们就不难理解IDB为什么就基于ASCII码,因为存储数据的类型只有字符串,巧妇难为无米之炊。
但是,IDB确实还处于发展的初级阶段,有缺陷,是难免的,新事物不可能一步到位,未来肯定还有很大的提升空间,我们拭目以待吧。
本文来源 我爱IT技术网 http://www.52ij.com/jishu/5086.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
