sqlite多行插入_sqlite3-批量insert插入多条信息-提高效率的办法 | 学步园

这也是之前进行了十万级别的insert插入信息,因为数量太多,所以感觉一条一条执行简直慢的要死……经过查询,找到了对应的解决办法,极大的提升了插入多条消息的效率。

之所以慢,就是因为每一条指令都成了一个事务,从而极大的降低了执行效率,解决办法就是把所有的指令归结为一个事务一次执行即可。

下面就是类比代码

/*开始事务*/

begin transaction;

/*万条记录开始*/

insert into [表名] values();

/*万条记录结束*/

/*执行事务*/

commit transaction;

利用事务,可以将几十分钟的执行指令大幅缩减到几十秒。因为因为这个过程只写一次磁盘。

还有一个思路,就是使用sqlite内存表,将数据先写到内存表,然后再更新到磁盘表。

(以下部分代码来自:http://17drupal.com/node/41507)

$conn = new PDO('sqlite::memory:');

$conn->exec("CREATE TABLE t1 (id1 interge,str1 varchar(30))");

$conn->exec("begin transaction");

$sql = '';

for($i=0;$i<1000000;$i++) {

$sql = "INSERT INTO t1 VALUES ({$i}, '阿斯蒂芬是否');";

$conn->exec($sql);

}

$conn->exec("commit transaction");

//内存表刷到磁盘

$conn->exec('ATTACH "D:\test.db" AS test1');

$conn->exec("insert into test1.t1 SELECT * FROM t1");

$conn->exec('DETACH test1');

原始博主说这个过程和使用事务的时间差不多。我未测试。

用一个事务的办法就可以提高效率的了,暂时不深入研究了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值