使用此php脚本插入超过1000条记录的最快方法是什么

时间:2013-12-03 13:29:10

标签: php mysql

我想用这个php代码一次插入1000多条记录,插入超过1000条记录需要很长时间。这可以更快吗?

$original = $_POST['contact'];
$output = array();
reset($original);

foreach($original as $value) {
    if(strpos($value, ',') === false)
        $output[] = $value; // add value straight away if it doesn't need splitting
    else {

        //split string by comma and trim whitespace from pieces
        $bits = explode(',', $value);
        foreach($bits as $bit) {
        $output[] = trim($bit);
    }
}

//now loop through $output array to get desired result:

foreach($output as $value) {

    echo $value."<br>$msg";
    $query = "INSERT INTO inbox (
        check_file,
        onderwerp,
        fromm,
        post,
        owner,
        date
    ) VALUES ( 
        '$check',
        '$onderwerp',
        '$session->username',
        '$msg',
        '$value',
        '$date'
    )";
    mysqli_query($database->connection,$query) or die (mysqli_error());

    $query = "INSERT INTO outbox (  
        check_file,
        onderwerp,
        owner,
        post,
        ontvanger,
        date
    ) VALUES (
        '$check',
        '$onderwerp',
        '$session->username',
        '$msg',
        '$value',
        '$date'
    )";
    mysqli_query($database->connection,$query) or die (mysqli_error());

}

2 个答案:

答案 0 :(得分:2)

使用mysqls多插入函数。您可以,而不是独立执行每个查询,将所有INSERTS编译为单个字符串:

insert into XXX VALUES (1, 2, 'query_1'), (3, 4, 'query_2'), (3, 5, 'query_3')

这将大大提高插入速度并减少不必要的网络流量。

答案 1 :(得分:1)

这是我的两分钱:

有很多方法可以将大量数据加载到MYSQL中,这里有两个!

方法1

像您一样添加每个记录程序。你可以做些什么来改善它,至少使用MySQLi语句(准备一个)然后绑定你的变量,它会快得多。

方法2

将输入读入已处理的格式化输出文件,并使用mysql LOAD语句将文件直接加载到MySQL中。

这些还有很多其他方法,但我首先尝试#1,因为你可能不想重写所有内容,如果你还需要更高的速度,那么#2之后。

祝你好运