我应该在领域使用@Index吗?

时间:2015-04-23 16:45:21

标签: android realm

我有最大值我的数据库中有600000个Realm对象。我通过id(int)=,uuid =和time(int)< =进行查询,结果按时间排序。我是否应该对某些字段使用@Index注释,并可能将ID从Integer更改为String?查询是否会变慢,因为我无法索引时间字段并且不能有多字段索引? Sqlite会更适合我的需要吗?

另外,如果我一次将大量对象存储到数据库中,我应该为所有对象使用一个事务还是为每个对象创建一个新事务?大型事务占用多少内存,并且在为每个对象创建新事务时会有性能损失?

数据库将位于Android设备的外部存储设备(存储卡)中。

2 个答案:

答案 0 :(得分:3)

您绝对应该在任何查询中使用的任何字段上使用@Index

它极大地提高了性能/查询速度。

答案 1 :(得分:1)

来自境界的克里斯蒂安。关于@Index,我们很快就会为整数添加它。如果你担心速度,我可能会对不同的选项进行基准测试,看看哪种方法更适合你,因为在一般情况下回答这些问题非常困难。

关于事务,在一个事务中尽可能多地批处理通常会更快,因为创建和提交事务会产生开销,但事务中的所有内容都必须适合内存。因此,根据数据集的大小,可能必须以较小的批次进行分解。再次制作一个小概念验证可能是了解在特定情况下哪种方法最有效的最佳方法。