Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android上,SQLiteDatabase.Insert()或SQLiteDatabase.execSQL()哪个更快?_Java_Android_Sql_Sqlite - Fatal编程技术网

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

Java 在Android上,SQLiteDatabase.Insert()或SQLiteDatabase.execSQL()哪个更快?,java,android,sql,sqlite,Java,Android,Sql,Sqlite,你好,我想知道什么方法在Android上更快 我有一个处理数千行的循环,我认为性能受到SQLiteDatabase.insert()方法的影响 在insert方法中,我将一个参数设置为contentvalues,我认为在后台,该方法必须有一个过程来检查每个contentvalue,并构建查询 相反,在execSQL方法中,我将整个查询作为一个参数,我认为该方法不必做太多的工作来执行它 我不知道我是否正确,我认为对于相当数量的数据,execSQL比insert好,但我不确定…很可能您不会看到任何差

你好,我想知道什么方法在Android上更快

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

在insert方法中,我将一个参数设置为
contentvalues
,我认为在后台,该方法必须有一个过程来检查每个
contentvalue
,并构建查询

相反,在
execSQL
方法中,我将整个查询作为一个参数,我认为该方法不必做太多的工作来执行它


我不知道我是否正确,我认为对于相当数量的数据,
execSQL
比insert好,但我不确定…

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

我试过了,它们之间有一点差异。。。execSQL速度更快,但很难注意到它

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