INSERT ... ON DUPLICATE KEY UPDATE与TRUNCATE/INSERT的区别

3

我目前正在重写一个数据推送脚本,该脚本从另一台服务器的MSSQL数据库中提取数据,然后将数据插入到MySQL数据库中。这个过程是通过PHP处理的,并且按计划每晚执行。

原始脚本每晚都会TRUNCATE表并重新插入所有数据。其中一些表具有来自MSSQL数据库的主键或唯一键,而其他一些则没有。

我考虑为当前没有它们的MySQL表添加通用主键,以便可以使用INSERT ... ON DUPLICATE KEY UPDATE而不是每晚清空表并重新插入数据。这些主键将仅在此过程中使用。

如果我使用INSERT ... ON DUPLICATE KEY UPDATE而不是像当前脚本一样使用TRUNCATEINSERT,这个过程会更快/资源更少吗?值得为当前没有主键的表创建通用主键来做INSERT ... ON DUPLICATE KEY UPDATE吗?我正在寻求脚本的最佳性能。

1个回答

0

不知道你的数据具体情况,很难给出一般性答案。我想知道表格的行数和是否使用Innodb。然而,如果表格很小,即<1000行,并且没有使用Innodb,那么我建议保持原样。但是,如果你有大型表格,使用INSERT..ON DUPLICATE方法可以显著提高速度。

一个好的流程可能是切换一两个较大的表格并测量速度改进。如果值得,那么继续进行其余操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接