7月 2, 2017 - php开发, 有料    4 Comments

大批量插入数据信息

若要大批量插入数据,比如插入1000条数据.

数据表结构如下:

第一种方法是进行普通的插入,但是会太耗时间,

图片的源代码如下:

<?php
$conn = new PDO('mysql:host=127.0.0.1;dbname=blog', 'blog', 'ziyou268');

for($i=0;$i<=1000;$i++){
        //$arr = [‘lisi’,23];
    $v = rand(1000,999999);
    $sql = " insert into test (name,age,qq) values('lisi',$v,$v)";
    $conn->query($sql);
}

时间

第二种方式:

用事务的方式:每100条算一次事务,效果还是很明显的

图片代码:

<?php
$conn = new PDO('mysql:host=127.0.0.1;dbname=blog', 'blog', 'ziyou268');

$sq = "start TRANSACTION";
$conn->query($sq);
for($i=1;$i<=1000;$i++){
    $v = rand(100000,999999);
    $sql = "insert into test (name,age,qq) values('lisi',$v,$v)";
    $conn->query($sql);
    if($i%100 == 0) {
        $conn->query('commit');
        $conn->query($sq);
    }
}
$conn->query('commit');

时间测试

而第三种方式是用:insert into table (value) values (value1),(value2),(value3); 

图片代码:

<?php
$conn = new PDO('mysql:host=127.0.0.1;dbname=blog', 'blog', 'ziyou268');

$sql = " insert into test (name,age,qq) values ";
for($i=0;$i<=1000;$i++){
    //$arr = [‘lisi’,23];
    $v = rand(1000,999999);
    $sql .= " ('lisi',$v,$v),";
}
$sql = substr($sql,0,strlen($sql)-1);
$conn->query($sql);

时间:

4 Comments

  • 嘿嘿,你这写的不少啊

  • 张姿势了,原来事务还可以这么玩,学习路漫漫