您的位置:首页 > 数据库

SQLite怎么解决插入多条数据速度慢

2013-02-04 10:51 225 查看
今天有个朋友测试 SQLite,然后得出的结论是:SQLite 效率太低,批量插入1000条记录,居然耗时91秒+!
下面是他发给我的测试代码。我晕~~~~~~

SQLiteDatabase db = helper.getWritableDatabase();
try
{
start = System.currentTimeMillis();
db.beginTransaction();//我添加的
for (int i = 0; i < 1000; i++)
{
bastDao.insert(user, db);
}
time = System.currentTimeMillis() - start;
db.setTransactionSuccessful();//我添加的
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
db.endTransaction();//我添加的
if (db != null)
{
db.close();
}
}


执行一下,耗时1.5 秒。这差距是不是太大了点?
为什么只是简单启用了一个事务会有这么大的差距呢?很简单,SQLite 缺省为每个操作启动一个事务,那么原代码 1000 次插入起码开启了 1000 个事务,"事务开启 + SQL 执行 + 事务关闭" 自然耗费了大量的时间,这也是后面显示启动事务后为什么如此快的原因。其实这是数据库操作的基本常识,大家要紧记,不好的代码效率差的不是一点半点。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: