4

我将 SQLite 用于桌面和 PDA 上的许多应用程序。大多数操作都是只读的,因为 SQLite 在我的应用程序中用作参考资料的数据存储。

基本上,我正在寻找有关在您知道对数据的访问是只读的情况下提高性能的建议。

也许通过各种编译指示设置?ETC...

SQLite 性能非常好,但是在 PDA 上,当您有多个数据库时,我可以看到性能受到很小的影响。我不认为这是 SQLite 的问题,只是 PDA 速度的现实。但是,话虽如此,也许有办法改进它。


很好的建议,而且说得很好。我希望能更具体地告诉引擎我在做什么。例如,告诉引擎不会对数据库进行多次写入,或者以某种方式修改缓存处理。

但是,我很高兴您将数据库的“设计”方面作为一个主要问题引起了人们的注意。

4

3 回答 3

2

标准数据库性能提示仍然适用:

  • 确保您的查询使用索引而不是全表扫描
  • 在查询中尽可能有选择性,这样您就不会从数据库中提取不需要的行
  • 仅选择所需的列
于 2008-11-03T12:45:10.727 回答
2

带有标志 SQLITE_OPEN_READONLY 的 sqlite3_open_v2() 改变了 SQLite 处理机会锁的方式,没有真正的性能优势。如果您正在进行大量读取或根据数据库的大小使用 :memory open 选项在内存中创建数据库副本,则可以使用 pragma cache_size。

于 2008-12-23T00:23:42.393 回答
-1

您可以使用标志SQLITE_OPEN_READONLY调用sqlite3_open_v2()。我不知道 sqlite3 是否真的使用它来优化它的行为,或者只是为了在它对操作系统的开放调用上设置适当的权限。

于 2008-11-07T13:53:51.007 回答