我目前有两个表:TableA和TableB。两个表都有大约10-15列,TableB在TableA的主键上获得了一个外键。在TableB中,如果标记/检查了一行,我将存储。 TableA通常与TableB(外键)的大约100-500行相关。它看起来像是:
在我的Android应用程序中,我经常需要检索TableA的所有数据并另外获取此值(所有这些都限于TableA的特定行ID):
标准解决方案和我的第一个想法是我查询获取标记的行和查询以获得TableA的每一行具有最高Id的行。但那会有很好的表现吗?它应该尽可能快地检索,因为TableA的所有行都会被频繁检索。
所以我的另一个解决方案是将相应的数据存储在TableA的列中,因此我不必查询TableB的行。那就像那样。:
但我的问题是:第二种解决方案是否会在性能方面产生很大差异?我们注意到它会更快检索吗? SQLite可以快速查询那么多数据吗?或者额外的努力不值得管理TableA的其他字段?
也许这个问题已经得到解答,但我不知道该找什么。
答案 0 :(得分:0)
我做了类似的分析,比较了一个存储长行(190字节到400字节,平均221字节)的所有数据的表,以及子表行长度为120字节的两个表关系层次结构长。 测试结果:两个表层次结构查询执行时间是LAN环境中长表的1/2。尽管需要连接操作,但2个表查询运行得更快。但奇怪的是,与一个表方法相比,更多的数据从服务器传输到客户端。由于我的测试是通过有线连接完成的,因此未考虑网络速度,这对于无线连接可能很重要。 表