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

我注意到,有多种方式来做SQLite操作(查询,插入,更新,删除),有些可以比其他更快。 许多网站提供不同的提示,并与其他人发生冲突。

  1. 看起来,使用一个事务进行批量插入比在循环中这样做要快得多。

    怎么来的? 使用SQLite时最好的方法是什么? sqlite如何在Android上工作?

  2. 混淆使用InserHelper与ContentValues ,如下所示。

    InserHelper是如何工作的,它会比ContentValues更快吗? 将交易速度进一步加快呢?

  3. 混淆其他SQL框架。 我记得添加索引会提高与索引有关的查询的性能。 Android也是如此吗? 这是一个很好的做法吗?

  4. 我听说在某些情况下,最好不要使用UI线程进行数据库操作。 在哪种情况下推荐? 如在DB操作变得有多慢? 如果数据库变成70MB,这是否意味着它会慢得多,UI线程应该永远不会处理它?

  • getWritableDatabase()不调用onCreate()
  • 新行字符\ n无法在textView Android中正确显示
  • 我的sqlite数据库存储在android中?
  • Sqlite数据库实例是线程安全的
  • 从Android的sqlite数据库检索大blob
  • 如何从Android设备中提取sqlite数据库?
  • 在SQLite数据库中join3个表
  • WebView导致SQLiteDiskIOException
  • 怎么来的?

    事务涉及磁盘I / O。 做一个大块的磁盘I / O比磁盘I / O的很多小块要便宜得多。

    InserHelper是如何工作的,它会比contentValues更快吗?

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

    会以更快的交易速度包装它呢?

    大概是的。

    android也是如此吗?

    索引可以提高查询速度,如果您为您正在执行的任何查询创build适当的索引。 索引总是减less插入/更新/删除速度,因为现在这些索引需要更新。 这与Android没有任何关系。

    是一个好东西使用?

    这是不可能的。 这与Android没有任何关系。

    最好不要使用UI线程进行数据库操作

    正确。

    在哪些情况下会被推荐?

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

    数据库操作变得有多慢?

    世纪。 可能到那时,设备中的某些东西就会失效,或者电池电量不足。

    如果数据库变成70MB,这是否意味着它会慢很多

    这取决于你用它做什么。

    和UI线程不应该处理它?

    正确。