2

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

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

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

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

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

4

2 回答 2

2

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

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

于 2012-05-23T13:46:03.290 回答
1

很可能你不会看到任何区别。大部分时间都花在将数据实际写入数据库中,查询生成是相当简单的一步。如果您想自己查看差异,我建议您使用两种方式对插入进行计时。

于 2012-05-17T23:59:56.570 回答