gpt4 book ai didi

php - 单次插入大数据还是每次循环插入大数据?

转载 作者:行者123 更新时间:2023-11-29 11:18:04 25 4
gpt4 key购买 nike

我的数据有 3000 多行。所以之前我需要将此数据导入到另一个表中。所以以前我是这样做的,如下所示

<?php
foreach($datas as $data){
//INSERT INTO table_name with $data
$con->query('insert query');
}

?>

然后我在想,尽管我们最初创建了连接,但每次插入都会通过连接到 mysql 并运行插入查询来消耗一些时间。所以我尝试先创建查询,然后插入

所以只有一次mysql执行,这避免了每次连接和插入等

<?php
foreach($datas as $data){
//INSERT INTO table_name with $data
//Concatenate each row and make single insert query with , separated values
}

//finally run the mysql insert with php
$con->query('insert query');
//so only one time we call mysql server
?>

我喜欢第二种方法,但问题是,如果有任何一行数据无效,那么整个查询就会失败。

如果是在foreach插入中,那么只有当前行插入会失败,其他数据都会插入。

有没有办法批量插入,但如果有任何单行数据无效,则仅不应插入该行,而应将其他行插入表中,而不是整个查询失败?

注意:我使用 , 表示整个查询值。 3000+ 行数据很小,但我会经常这样做。这就是为什么要寻找表演。上面的代码只是模板,不是真正的代码。

最佳答案

如果你想要性能,那么尽可能减少 php 交互。这意味着直接LOAD DATA INFILE或者对于表之间的预先存在的数据,使用仅sql移动。换句话说,没有 PHP 循环。

关于您的评论允许某些失败:

对于数据加载,请使用LOAD DATA INFILE IGNORE 。请注意ingore这个词。

对于预先存在的数据移动,请使用INSERT IGNORE。与插入相同,只是添加忽略。

与 PHP 驱动的循环方法相比,您无法在性能方面击败它。

关于php - 单次插入大数据还是每次循环插入大数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39418568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com