2009-06-22 94 views
1

我在基于SQLite的iPhone应用程序中使用临时表。表现并非如此,所以我考虑了各种优化的候选人。其中大部分运作良好,并具有预期效果。不过,我也想试试moving the temporary tables from flash into memory看看有没有什么改进。SQLite中临时表存储在iPhone上

在实际的设备我尝试使用这种配置:

PRAGMA temp_store = 2; 

这些执行没有错误。然而,当我查询使用配置:

PRAGMA temp_store; 

没有结果返回,所以我无法验证此配置生效。我可以阅读其他PRAGMA设置,例如'page_size'。谁能告诉我:

  • 如果这是预期的行为
  • 如果这是SQLite的一个不受支持的配置在iPhone
  • 如果这种优化将是毫无意义的iPhone,即使是可能的(因也许是硬件)
  • 我怎样才能成功移动临时表存储到内存在这种情况下

注:我深知SDK 3.0中的核心数据,但我有很好的理由不使用它。

更新:抖动指出iPhone上的SQLite的实例可以被编译与SQLITE_TEMP_STORE设置为始终使用临时文件。我不知道这个设置 - 有什么方法可以证实这种情况?

+0

详细说明您已经完成了哪些优化?什么是使用场景。也许一些其他的技巧,然后在 – jitter 2009-06-22 13:51:43

回答

1

我刚刚将SQLite源自己添加到我的项目中,因为至少在iPhone OS 2.x上的SQLite不是线程安全的。

1

我不知道,但猜测他们编译SQLITE_TEMP_STORE = 0的sqllite。还有另一个人尝试过这种方式,但没有成功。 SQLite optimization on the iPhone

  • 列表项

我不能尝试一下自己,但似乎有源太(src/main.c)一sqlite3TempInMemory()功能。不知道你是否可以打电话。如果 主内存应使用的 临时文件瞬时寻呼机 文件和声明期刊

此函数返回true。返回的 值取决于 db-> temp_store(运行时参数)和 的编译时间值 SQLITE_TEMP_STORE的值。下表 描述了这两个值的 和这个函数的返回值 之间的关系。

+1

飞来飞去这一切都成为一个自我参照(链接到我的博客文章:-)我希望我忽略了一些东西。 – teabot 2009-06-22 13:57:23

+0

哈哈!!应该真的注意到了在stackoverflow flair中链接的头像。 – jitter 2009-06-22 17:40:32