java - 在 Android 上,SQLiteDatabase.Insert() 或 SQLiteDatabase.execSQL() 哪个更快?

标签 java android sql sqlite

您好,我想知道在 Android 上哪种方法更快。

我有一个处理数千行的循环,我认为 SQLiteDatabase.insert() 方法会影响性能。

在插入方法中,我放置了一个带有 contentvalues 的参数,我认为在后台该方法必须有一个过程来检查每个 contentvalue 并构建查询。

相反,在 execSQL 方法中,我将整个查询作为参数,并且我认为该方法不必执行太多操作即可执行它。

我不知道我是否正确,我认为对于大量数据,execSQL 比插入更好,但我不确定......

最佳答案

嗯,我尝试过,它们之间有一点区别...... execSQL 更快,但很难注意到它。

但是,我真正的问题是我没有使用事务。由于 sqlite 没有服务器来控制对数据的访问,因此 sqlite 必须为每次插入操作关闭并重新打开物理文件。因此,如果循环中有一千次插入并且没有事务,它将执行一千次事务。在我的测试中,在不使用事务的情况下,一千次插入持续了 11 秒,而使用事务则只持续了 1 秒。

关于java - 在 Android 上,SQLiteDatabase.Insert() 或 SQLiteDatabase.execSQL() 哪个更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10644996/

相关文章:

mysql - 使用不同表的计数进行计划和更新

MySQL:WHERE 子选择中 GROUP BY 的奇怪行为

java - 从 Telnet 获取输出

Java 添加 ImageIcon 到 JLabel

android - 如何检测 Firebase 监听器是否已完成获取数据?

android - Gradle构建速度

java - 如何修复奇怪的 Android Studio 编辑器模式?

php - Mysql 获取包含计数和日期之间的数据

java - 使用 Jelastic 的 Cron 作业

java - 如何使用我在 html 页面中创建的枚举类