gpt4 book ai didi

php - 缓慢插入和更新到大表

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

所以我写了一个脚本,将数据从超过 1.5m 行的 csv 文件导入到 mysql innodb 表中,它将扫描 CSV,然后对于每个 CSV 行:

  • 在表中搜索以检查记录是否已存在。
  • 如果存在,更新记录。
  • 如果没有,插入新的。

然后转到 CSV 中的下一行并再次执行上述步骤。

问题是,要导入数据的表也有1.5m的记录,导致导入数据很慢。我尝试了脚本并看到:

  • 如果导入数据到空表,每分钟可以导入500行。
  • 如果向那个1.5m的记录表导入数据,每分钟只能导入30行。

有没有什么办法可以让导入进度更快?

最佳答案

问题的根源是这样的:

您在表中搜索要插入的键,但是当您执行插入时,数据库管理系统也会执行完整性检查,即确保标记为的列上没有 NULLNOT NULL,检查是否未违反外键约束,并且(在这种情况下最重要)确保主键和唯一字段是唯一的。

这意味着当您执行 INSERT 时,DBMS 将(除其他外)搜索该项目,从而使您之前的搜索变得多余。

您可以将 3 个操作替换为一个操作,如下所示:

INSERT INTO tablename(column1,column2...) 
VALUES (v1,v2,....)
ON DUPLICATE KEY UPDATE SET column1=v1...

知道如果您说 column1=VALUES(column1) 这意味着“使用我在 VALUES() 部分中指定的值也很有用插入。

关于php - 缓慢插入和更新到大表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41629129/

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