您好我想知道Android上哪种方法更快。
我有一个处理数千行的循环,我认为性能受SQLiteDatabase.insert()
方法的影响。
在insert方法中,我使用contentvalues
放置了一个参数,我认为在后台,该方法必须有一个流程来检查每个contentvalue
并构建查询。
而是在execSQL
方法中,我将整个查询作为参数,我认为该方法不必执行那么多操作。
我不知道我是否正确,我认为execSQL
比插入大量数据要好,但我不确定......
答案 0 :(得分:2)
我试过这个并且它们之间有一些区别...... execSQL速度更快但很难注意到它。
然而,我真正的问题是我没有使用交易。由于sqlite没有服务器来控制对数据的访问,因此sqlite必须关闭并重新打开每个插入的phisycal文件。因此,如果你在一个循环中有一千个插入并且没有它的交易,那么它将进行一千次交易。在我的测试中,一千次插入持续了11秒而没有使用交易,并且通过交易仅持续了1秒。
答案 1 :(得分:1)
很可能你不会看到任何差异。大部分时间花在实际将数据写入数据库中,并且查询生成是相当简单的步骤。如果你想亲眼看看差异,我建议你用两种方式计算插入时间。