Java 在Android上,SQLiteDatabase.Insert()或SQLiteDatabase.execSQL()哪个更快?
你好,我想知道什么方法在Android上更快 我有一个处理数千行的循环,我认为性能受到Java 在Android上,SQLiteDatabase.Insert()或SQLiteDatabase.execSQL()哪个更快?,java,android,sql,sqlite,Java,Android,Sql,Sqlite,你好,我想知道什么方法在Android上更快 我有一个处理数千行的循环,我认为性能受到SQLiteDatabase.insert()方法的影响 在insert方法中,我将一个参数设置为contentvalues,我认为在后台,该方法必须有一个过程来检查每个contentvalue,并构建查询 相反,在execSQL方法中,我将整个查询作为一个参数,我认为该方法不必做太多的工作来执行它 我不知道我是否正确,我认为对于相当数量的数据,execSQL比insert好,但我不确定…很可能您不会看到任何差
SQLiteDatabase.insert()
方法的影响
在insert方法中,我将一个参数设置为contentvalues
,我认为在后台,该方法必须有一个过程来检查每个contentvalue
,并构建查询
相反,在execSQL
方法中,我将整个查询作为一个参数,我认为该方法不必做太多的工作来执行它
我不知道我是否正确,我认为对于相当数量的数据,
execSQL
比insert好,但我不确定…很可能您不会看到任何差异。大部分时间都花在将数据写入数据库上,查询生成是一个相当简单的步骤。如果您想自己看到差异,我建议您使用这两种方法对插入进行计时。我试过了,它们之间有一点差异。。。execSQL速度更快,但很难注意到它
然而,我真正的问题是我没有使用事务。由于sqlite没有控制数据访问的服务器,因此每次插入时,sqlite都必须关闭并重新打开Physycal文件。因此,如果在一个循环中有一千个插入,并且没有事务,那么它将执行一千个事务。在我的测试中,一千次插入在不使用事务的情况下持续了11秒,而使用事务只持续了1秒