Android SQLite-每次查询数据还是在表中存储值?

Android SQLite-每次查询数据还是在表中存储值?,android,sql,database,performance,sqlite,Android,Sql,Database,Performance,Sqlite,我目前有两张表:表A和表B。两个表都有大约10-15列,TableB在TableA的主键上有一个外键。在表B中,如果有一行被标记/选中,我将存储该行。TableA通常与大约100-500行TableB(外键)相关。看起来是这样的: 在我的android应用程序中,我经常需要检索TableA的所有数据,并额外获取这些值(所有值都限于TableA的特定行id): 表B中已标记的行数(设置为1) 表B中所有行的计数 具有最高Id且未标记的TableB行(设置为0) 标准解决方案和我的第一个想法是

我目前有两张表:表A和表B。两个表都有大约10-15列,TableB在TableA的主键上有一个外键。在表B中,如果有一行被标记/选中,我将存储该行。TableA通常与大约100-500行TableB(外键)相关。看起来是这样的:

在我的android应用程序中,我经常需要检索TableA的所有数据,并额外获取这些值(所有值都限于TableA的特定行id):

  • 表B中已标记的行数(设置为1)
  • 表B中所有行的计数
  • 具有最高Id且未标记的TableB行(设置为0)
标准解决方案和我的第一个想法是,我查询以获得标记的行,并查询以获得表中每一行Id最高的行。但这会有好的表现吗?应该尽可能快地检索它,因为TableA的所有行都会被频繁检索

所以我的另一个解决方案是在TableA的列中存储适当的数据,这样我就不必查询TableB的行。看起来是这样的

但我的问题是:第二种解决方案是否会在性能方面产生如此大的差异?我们是否注意到,它会更快地被检索?SQLite能以如此快的速度查询那么多数据吗?或者额外的努力不值得管理TableA的其他字段吗


也许这类问题已经得到了回答,但我不知道该寻找什么。

我做了一个类似的分析,比较了一个表(190字节到400字节,平均221字节)和一个两表关系层次结构(子表行长为120字节)。
测试结果:两个表层次结构查询执行时间是LAN环境中长表的1/2。2表查询运行得更快,但需要一个联接操作。但奇怪的是,从服务器到客户端传输的数据比单表方法要多。因为我的测试是用有线连接完成的,所以没有考虑网络速度,这对无线连接可能很重要。表

您希望手机有什么样的性能?使用最简单的解决方案,然后如果您发现它不适用,请尝试第二个解决方案。好吧,我真的不知道当使用sqlite查询那么多数据时会发生什么。我想确保它不会在每次检索tableA的数据时加载几秒钟。我只是想,有人以前也有类似的问题,可以判断是否真的需要存储额外的字段,或者sqlite检索数据