[英]How to speed up queries in sqlite android in db.execSql
我有以下代码用于在数据库中输入数据。
public static void execSql(SQLiteDatabase db, String sql)
{
String[] parts = sql.split(";");
for (String entry : parts) {
db.execSQL(entry);
}
}
最初在sql字符串中所有“ INSERT ......”,然后执行每个插入循环。 总插入数为22908。数据输入大约需要4分钟,我认为这是很长的时间。 数据为7,95 MB。 有什么办法可以加快介绍速度,并缩短到几秒钟?
INSERT INTO location ( 'latitude' , 'updated' , 'id' , 'longitude' , 'created' ) VALUES( '213.2000000' , '2014-08-25 11:07:42+00:00' , '1' , '321.0000000' , '2014-08-25 11:07:42+00:00' );
INSERT INTO location ( 'latitude' , 'updated' , 'id' , 'longitude' , 'created' ) VALUES( '42.7191000' , '2014-09-17 12:53:49+00:00' , '2' , '23.0834000' , '2014-09-17 12:53:49+00:00' );
......................
这是数据sql变量。
将工作包装在事务中:
db.beginTransaction();
try {
// your SQL goes here
db.setTransactionSuccessful();
}
finally {
db.endTransaction();
}
现在,您正在为每个SQL语句执行一个事务,这非常慢。 每个事务都涉及磁盘I / O,与成千上万个小磁盘I / O相比,执行一大批磁盘I / O效率要高得多。
使用准备好的语句也将逐渐有所帮助。
您正在执行仅具有不同参数值的同一查询。 这就是为什么您可以利用预编译的sql语句的原因。 您可以创建PreparedStatement对象,然后可以使用该对象多次有效地执行您的插入语句。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.