mysql大批量入库sql优化

 function batchInsert($table, $keys, $values, $type = 'INSERT'){
        $tempArray = array();
        foreach($values as $value){
            $tempArray[] = implode('\', \'', $value);
        }
        return $type.' INTO `'.$table.'` (`'.implode('`, `', $keys).'`) VALUES (\''.implode('), (', $tempArray).'\')';
    }

    $splitNum = 5;
    $data = array(
                            array('王朝', '20'), 
                            array('马汉', '20'), 
                            array('张龙', '20'), 
                            array('赵虎', '20'), 
                            array('展护卫', '20'), 
                            array('包大人', '20'), 
                            array('王媳妇', '20'), 
                    );

    foreach(array_chunk($data, $splitNum) as $values){
        echo batchInsert('table', array('name', 'age'), $values);
        echo '<br>';
    }

你可以适当调整 $splitNum 的大小,比如调整为 50、100、500 ,只要你的 内存、bulk_insert_buffer_size max_allowed_packet 足够大,这点数值也可以调整为 1000 ,这样,就是 1000 条记录分为1次提交到数据库, SQL插入速度 立马杠杠上升的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值