代码之家  ›  专栏  ›  技术社区  ›  plugmind

SQLite在三星Galaxy GT-I9000中速度非常慢

  •  2
  • plugmind  · 技术社区  · 14 年前

    一旦一个数据库文件获得大约400KB的更新/insert查询就需要更多的时间来执行-2秒!与其他设备(HTC Magic、HTC Desire)相比,更新/插入查询大约需要40毫秒!

    数据库文件位于应用程序数据目录中。将数据库文件移动到sd卡可以显著提高速度。

    定期分析和真空命令不会影响速度。以及PRAGMA cache\u size命令。

    你对如何提高表演有什么想法吗?

    除了将数据库保存在sd卡中或将数据库拆分为多个文件(每个文件包含一个表)之外,任何想法都是受欢迎的。

    4 回复  |  直到 14 年前
        1
  •  3
  •   Community CDub    8 年前

    使用事务和参数化查询。如果不使用参数化查询,Sqlite必须解析每个sql语句。所有这些不必要的解析都会使简单的insert语句慢2到3倍。请看这里: How do I get around the "'" problem in sqlite and c#?

    使用事务也非常重要,因为Sqlite可以非常快地执行插入操作,但提交速度很慢,因此必须将插入/更新和删除绑定到一个大事务中。

        2
  •  4
  •   Mad Scientist    14 年前

    inofficial lag fixes 不过,三星的RFS文件系统似乎是造成延迟的原因。

    希望三星能发布一个更新来解决这个问题,在此之前,最好的办法就是尽可能避免I/O。

        3
  •  2
  •   MPelletier    14 年前

    批量插入命令应在事务中执行:

    BEGIN TRANSACTION;
    // INSERTS
    COMMIT;
    
        4
  •  2
  •   plugmind    14 年前

    这帮了我很大的忙,激励我去寻找更多的东西。我找到了一个解决方案,它给了我们巨大的推动力:

    现在,插入/更新查询的运行速度快了4倍。

    但它有一个小缺点。


    http://web.utk.edu/~jplyon/sqlite/SQLite_optimization_FAQ.html#pragmas