gpt4 book ai didi

php - Mysql插入大数据

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

现在我正在尝试优化一些代码..

将大量数据插入表中的更好方法是什么?

考虑此代码正在运行。

$arrayOfdata = execute query (SELECT c.id FROM table1 ) 

从table1中获取所有数据,将其存储到数组中,并将其插入到表中。

 private function insertSomeData($arrayOfdata, $other_id){
foreach($arrayOfdata as $data){
INSERT INTO table (
other_id,
other2_id,
is_transfered
) VALUES ('.$other_id.', '.$data['id'].', 0)'
}
}

我知道如果 table1 中有 500k 的数据,这段代码会很慢。所以我尝试了这样的事情..我把所有的都放在一个sql查询中

INSERT INTO 
table (
other_id,
other2_id,
is_transfered
)
SELECT
"other_id", c.id, 0
FROM table1

我读到要插入大量数据会导致 mysql 变慢或超时。我在本地计算机的 500k 数据上尝试了这段代码,它运行良好..

如果插入大数据,有什么办法会导致问题吗?其他更快插​​入的方法不会导致服务器使用太多资源?

最佳答案

对于插入大量记录,您应该考虑批量插入而不是为每一行调用插入。

喜欢

INSERT INTO [Table] ([Column List]) 
VALUES ([Value List 1])
, ([Value List 2])
, [...]
, ([Value List N]);

更新到下面的评论

您可以使用一个循环来生成一个查询,每个记录都附加到计数器达到批量大小。然后,一旦达到批量大小,就会触发 mysql 插入并重置计数器。

此外,如果数据太多而您只需要将其迁移到新表,您可能会考虑将查询附加到 db.sql 文件中并直接通过 sql 控制台转储它,例如

USE newdb
SOURCE db.sql

关于php - Mysql插入大数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19063339/

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