| 條數(shù) | 時(shí)間 (單位:秒) |
|---|---|
| 10 | 0.011 |
| 1000 | 0.585 |
| 10000 | 5.733 |
| 100000 | 60.587 |
方法二、使用insert語(yǔ)句合并插入
mysql里面是可以使用insert語(yǔ)句進(jìn)行合并插入的,比如
INSERT INTO user_info (name, age) VALUES ('name1', 18), ('name2', 19);表示一次插入兩條數(shù)據(jù)
下面看示例代碼,看看不同數(shù)據(jù)條數(shù)下
$arr = [
[
'name' => 'testname1',
'age' => 18,
],
[
'name' => 'testname2',
'age' => 19,
],
[
'name' => 'testname3',
'age' => 18,
],
// 此處省略
……
……
];
$servername = "localhost";
$port = 3306;
$username = "username";
$password = "password";
$dbname = "mytestdb";
// 創(chuàng)建連接
$conn = new mysqli($servername, $username, $password, $dbname, $port);
// 檢測(cè)連接
if ($conn->connect_error) {
die("connect failed: " . $conn->connect_error);
}
$costBegin = microtime(true);
if (!empty($arr)) {
$sql = sprintf("INSERT INTO user_info (name, age) VALUES ");
foreach($arr as $item) {
$itemStr = '( ';
$itemStr .= sprintf("'%s', %d", $item['name'], (int)$item['age']);
$itemStr .= '),';
$sql .= $itemStr;
}
// 去除最后一個(gè)逗號(hào),并且加上結(jié)束分號(hào)
$sql = rtrim($sql, ',');
$sql .= ';';
if ($conn->query($sql) === TRUE) {
} else {
echo "Error: " . $sql . "br>" . $conn->error;
}
}
$costEnd = microtime(true);
$cost = round($costEnd - $costBegin, 3);
var_dump($cost);
$conn->close();
下面看一下少量數(shù)據(jù)與大量數(shù)據(jù)的時(shí)間對(duì)比。從總體時(shí)間上,可以看出insert合并插入比剛才for循環(huán)插入節(jié)約了很多時(shí)間
| 條數(shù) | 時(shí)間 (單位:秒) |
|---|---|
| 10 | 0.006 |
| 1000 | 0.025 |
| 10000 | 0.131 |
| 100000 | 1.23 |
當(dāng)然,如果你覺(jué)得數(shù)組太大,想要減少sql錯(cuò)誤的風(fēng)險(xiǎn),也可以使用array_chunk將數(shù)組切成指定大小的塊,然后對(duì)每個(gè)塊進(jìn)行insert合并插入
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
標(biāo)簽:紹興 綏化 清遠(yuǎn) 萊蕪 安康 呼倫貝爾 金華 溫州
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《php往mysql中批量插入數(shù)據(jù)實(shí)例教程》,本文關(guān)鍵詞 php,往,mysql,中,批量,插入,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。