什么是Realm本机整数大小? Int vs Int8,Int16,Int32

时间:2016-03-11 17:33:41

标签: realm

TL; DR:我正在建立一个在iOS和Android之间共享的数据集。我应该调整整数大小以匹配它们的实际范围,或者只是使所有内容整数并在Swift中使用long并在Java和Swift中使用Int吗?

在典型的SQL数据库中,存储大量4字节整数所需的空间比1字节整数多1倍[1]。但是,我在this answer中读到整数存储为bit-packed ,而在Realm Java help整数类型byte,short,int和long都被映射在Realm 中使用相同类型(实际上很长)。因此,在行之间进行读取,无论我使用什么整数子类型,磁盘存储似乎都是相同的。

因此,从纯粹的Realm /数据库角度来看,我应该只使用long&斯威夫特的{{1}}和Java分别? (即撇开语言差异,如投射,内存大小等)

如果对整数字段建立索引,是否会对所选类型产生任何影响?

PS:非常感谢Realm团队提供的优秀文档以及对SO的良好支持!

[1] 是的,我知道它比这更复杂。

1 个答案:

答案 0 :(得分:2)

您的解释是正确的:相同的底层存储类型用于Realm中的所有整数类型,并且该存储类型根据存储的值范围调整每个值使用的位数。例如,如果仅存储0-15范围内的值,则每个值将使用比存储0-65,535范围内的值更少的位。同样,整数属性上的所有索引都使用公共存储类型。