我使用以下代码在数据库中输入数据。
public static void execSql(SQLiteDatabase db, String sql)
{
String[] parts = sql.split(";");
for (String entry : parts) {
db.execSQL(entry);
}
}
最初所有" INSERT ......"在sql字符串中,然后执行每个插入循环。总插入数为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变量。
答案 0 :(得分:1)
在交易中包装作品:
db.beginTransaction();
try {
// your SQL goes here
db.setTransactionSuccessful();
}
finally {
db.endTransaction();
}
现在,您正在为每个SQL语句执行一个事务,这非常慢。每个事务都涉及磁盘I / O,并且执行一个较大批量的磁盘I / O比成千上万个小磁盘I / O更有效。
使用预准备语句也会逐步提供帮助。
答案 1 :(得分:0)
您只使用不同的参数值执行相同的查询。这就是为什么你可以利用预编译的sql语句。您可以创建PreparedStatement的对象,然后可以使用该对象多次有效地执行insert语句。