如何在Android中使用SQLite实现最佳性能?

如何在Android中使用SQLite实现最佳性能?,android,sqlite,transactions,bulkinsert,Android,Sqlite,Transactions,Bulkinsert,我注意到有多种方法可以执行SQLite操作(查询、插入、更新、删除),有些方法可以比其他方法更快。许多网站提供不同的提示,有些网站和其他网站存在冲突 使用事务进行大容量插入似乎比在循环中这样做要快 为什么?使用SQLite时,实现最佳性能的最佳方法是什么?sqlite如何在Android上工作 与使用vs混淆,如图所示 它是如何工作的?它是否总是比以前更快?用事务包装它会进一步加快速度吗 对其他SQL框架的混淆。我记得添加索引可以提高与索引相关的查询的性能。Android也是这样吗?这是一种好的

我注意到有多种方法可以执行SQLite操作(查询、插入、更新、删除),有些方法可以比其他方法更快。许多网站提供不同的提示,有些网站和其他网站存在冲突

  • 使用事务进行大容量插入似乎比在循环中这样做要快

    为什么?使用SQLite时,实现最佳性能的最佳方法是什么?sqlite如何在Android上工作

  • 与使用vs混淆,如图所示

    它是如何工作的?它是否总是比以前更快?用事务包装它会进一步加快速度吗

  • 对其他SQL框架的混淆。我记得添加索引可以提高与索引相关的查询的性能。Android也是这样吗?这是一种好的做法吗

  • 我听说在某些情况下,最好不要将UI线程用于DB操作。在哪些情况下建议这样做?如中所示,DB操作会变得多慢?如果DB变成70MB,是否意味着它会慢得多,UI线程永远不应该处理它

  • 为什么

    事务涉及磁盘I/O。执行一个较大的磁盘I/O块比执行许多较小的磁盘I/O块要便宜得多

    inserthelper是如何工作的?它是否总是比contentValues快

    引用:“这个类允许用户对一个表进行多次插入,但只编译一次SQL insert语句,这可能会提高性能。”

    用事务包装它会进一步加快速度吗

    大概是的

    android也是这样吗

    如果为正在执行的任何查询创建适当的索引,索引可以提高查询速度。索引总是会降低插入/更新/删除速度,因为现在这些索引需要更新。这与Android没有什么特别的关系

    这是个好东西吗

    这是不可能抽象地回答的。这与Android没有什么特别的关系

    最好不要将UI线程用于DB操作

    在哪种情况下会推荐

    不建议在主应用程序线程上执行任何磁盘I/O

    DB的运行会变得多慢

    几个世纪。可能到那时,设备会出现故障,或者电池电量耗尽

    如果DB变为70MB,是否意味着速度会慢得多

    这取决于你用它做什么

    UI线程不应该处理它


    正确。

    谢谢您的快速回答。很抱歉提出这些抽象的问题,但我想问的是,根据你的经验,你注意到了什么。另外,使用InsertHelper vs contentValues vs compileStatement的技巧如何?哪一个在速度方面最好?@androiddeveloper:我从未使用过
    InsertHelper
    。从描述和我对它的了解来看,只有在循环中进行大量插入时,它才会有帮助。谢谢你的帮助。顺便说一句,我注意到你有一本书。你是安卓公司的一员还是自己工作?@androiddeveloper:我拥有并经营一家专门从事移动开发的公司。