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

标签 android sqlite join user-defined-fields

我计划为 SQLite 生成查询,其中涉及 12 个表的许多连接,这将超过 SQLite 中 64 个表的连接限制。 (~250 个表连接或可能更多)这最终将在 android 上运行。这背后的目的是根据生成的报告在结果集中包含 X 数量的用户定义字段。

不幸的是,我不是 DBA,我不知道实现此目标的最佳方法。

到目前为止,我认为选项是:

  • 使用 2 个临时表来兼顾结果集,同时加入尽可能多的数量。 (我以前在 SQLServer 中的解决方案,相当慢)
  • 生成几列的结果集和一个要连接的键,并将它们存储在 n 临时表中。 (其中 n 小于 64)然后将所有临时表连接到它们的公共(public)键上。
  • 创建一个临时表并一次填充一个插入或更新。
  • 不要进行大连接,而是执行多次选择并填充某种数据容器。

还有什么我应该考虑的吗?

最佳答案

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

通常,在处理报告时,您会希望将查询拆分成小块,并在适用的情况下将中间结果存储在临时表中。

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

关于android - 在 SQlite 中执行超过 64 个表连接的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5900440/

相关文章:

Android Studio 获取旧 Artifact

java - 在Android中初始化之前访问类对象

android - Swift 到 Kotlin - 扩展

java - 如何从 Activity 中的 getAll() 方法获取数据

mysql - sql中如何通过join选择多个值

php - 如果在另一个表中找不到则返回空行

android - 是否可以移动 strings.xml 的路径/文件位置?

sqlite - 如何为 laravel 网络服务器设置 SQLITE?

Android - 'cursor.close()' 可能会产生 'java.lang.nullpointerexception'?

mysql - SQL:用连续值替换非连续值