在SQlite中执行超过64个表连接的最快方法是什么?

时间:2011-05-05 15:37:16

标签: android sqlite join user-defined-fields

3 个答案:

答案 0 :(得分:3)

当你试图加入那么多表时,我认为你不能在任何关系数据库平台上“快速” - 任何一种内置优化都会放弃重影。当我在查询中看到多达十个表时,我可能会查看我的设计。

我认为您的架构设计需要重新审视。模式中的250多个表(在电话上!)对我没有意义 - 我在一个具有200 + GB数据的数据库中运行多个企业应用程序,但仍然只有84个表。而且我从未加入所有这些人。你的所有表都有不同的列吗?真的不一样吗?您可以发布sqlite_master的几个条目吗?

答案 1 :(得分:3)

根据您对Mike的回复的评论,“生成报告的查询需要多次加入并重新加入”。

通常,在处理报告时,您需要将查询拆分为一口大小的块,并将中间结果存储在适用的临时表中。

此外,你的问题让你听起来像是一个实体/属性/价值存储,并试图转动整个事物。如果是这样,您可能需要重新使用此设计反模式,因为它可能是您问题的根源。

答案 2 :(得分:2)

由于您的应用程序在Android设备上运行,我猜它会与某个服务器上的企业级数据库同步。真正的解决方案是在设备数据库上生成服务器数据的非规范化表示,因此可以更容易地访问它。