【发布时间】:2010-11-04 20:38:27
【问题描述】:
我在基于 SQLite 的 iPhone 应用程序中使用临时表。性能不符合要求,因此我查看了各种优化候选者。其中大多数都运作良好并取得了预期的效果。不过我也想试试moving the temporary tables from flash into memory看看有没有改善。
在实际设备上,我尝试使用以下方法进行配置:
PRAGMA temp_store = 2;
这些执行没有错误。但是,当我使用以下方式查询配置时:
PRAGMA temp_store;
没有返回任何结果,因此我无法验证此配置是否有效。我可以阅读其他 PRAGMA 设置,例如“page_size”。谁能告诉我:
- 如果这是预期行为
- 如果这是 iPhone 上 SQLite 中不受支持的配置
- 如果这样的优化在 iPhone 上毫无意义,即使它是可能的(可能是由于硬件)
- 如何在这种情况下成功地将临时表存储移动到内存中
注意:我非常了解 SDK 3.0 中的 Core Data,但我有充分的理由不使用它。
更新: jitter 指出 iPhone 上的 SQLite 实例可能已经编译了 SQLITE_TEMP_STORE 设置为始终使用临时文件。我不知道这个设置 - 有什么方法可以确认是这种情况吗?
【问题讨论】:
-
详细说明您已经进行了哪些优化?以及使用场景是什么。也许其他一些技巧会飞进来
标签: iphone database optimization sqlite