如何快速更新多行(1500000)

e0bqpujr  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(234)

我有一个表有1.5密耳行,我有47k值要更新。我试过两种方法都很慢。
第一个是4.7万排

UPDATE $table 
SET name = '$name' 
WHERE id = '$id'

其次是

$prefix = "UPDATE table
    SET name = (case ";
while () {
    $mid .=  "when id = '$id' then '$name' ";   
}
$suffix = "end);";

$query = $prefix . $mid . $suffix;

有没有办法做得更快?也许和 LOAD DATA INFILE ? 我搞不懂这个的更新语法。

yr9zkbsy

yr9zkbsy1#

我每天都要导入大文件,并且尝试各种各样的事情。
最后,我得到了最好的表现具体组合:
首先将csv复制到数据库服务器,然后从本地磁盘加载它,而不是从客户机加载csv。
确保您有一个与此完全匹配的表结构。我使用了一个临时表进行导入,然后使用单独的查询将数据导入到最终的表中。
tmp表上没有外键和唯一索引检查。
这将大大加快事情的发展。如果需要提高性能,可以增加日志缓冲区的大小。
显然:
确保你不进口你不需要的东西。对包含的字段和行要严格要求。
如果一列中只有几个不同的文本值,请改用数值。
你的浮点数真的需要8位小数吗?
是否重复导入相同的数据,但只能插入更新?
确保在导入期间不会触发不必要的类型转换。准备数据,使其尽可能接近要导入的表。

相关问题