答案 0 :(得分:3)
当你试图加入那么多表时,我认为你不能在任何关系数据库平台上“快速” - 任何一种内置优化都会放弃重影。当我在查询中看到多达十个表时,我可能会查看我的设计。
我认为您的架构设计需要重新审视。模式中的250多个表(在电话上!)对我没有意义 - 我在一个具有200 + GB数据的数据库中运行多个企业应用程序,但仍然只有84个表。而且我从未加入所有这些人。你的所有表都有不同的列吗?真的不一样吗?您可以发布sqlite_master
的几个条目吗?
答案 1 :(得分:3)
根据您对Mike的回复的评论,“生成报告的查询需要多次加入并重新加入”。
通常,在处理报告时,您需要将查询拆分为一口大小的块,并将中间结果存储在适用的临时表中。
此外,你的问题让你听起来像是一个实体/属性/价值存储,并试图转动整个事物。如果是这样,您可能需要重新使用此设计反模式,因为它可能是您问题的根源。
答案 2 :(得分:2)
由于您的应用程序在Android设备上运行,我猜它会与某个服务器上的企业级数据库同步。真正的解决方案是在设备数据库上生成服务器数据的非规范化表示,因此可以更容易地访问它。