我目前正在重写一个数据推送脚本,该脚本将数据从另一台服务器上的 MSSQL 数据库中提取出来,然后将数据插入到 MySQL 数据库中。这个过程被 cron'ed 每晚运行,并通过 PHP 处理。
原始脚本TRUNCATE
是表格并每晚重新插入所有数据。一些表具有来自 MSSQL 数据库的主键、唯一键。有些表没有。
我正在考虑向当前没有它们的 MySQL 表添加通用主键,因此我可以做一个INSERT ... ON DUPLICATE KEY UPDATE
而不是每晚清空表并重新插入数据。除了这个过程之外,没有其他原因会使用主键。
如果我按照脚本当前的方式执行与然后INSERT ... ON DUPLICATE KEY UPDATE
相比,该过程会更快/更少资源密集型吗?在当前没有它们的表上创建通用主键只是为了做一个麻烦是否值得?我正在寻找这个脚本的最佳性能。TRUNCATE
INSERT
INSERT ... ON DUPLICATE KEY UPDATE