我需要从合作伙伴的服务器检索大约60,000多个MySQL记录并将其保存到我的数据库中。我的脚本需要每天3次(60K + X 3)
哪一个更好更快
DELETE ALL Records from my DB -> Retrieve Records from Partner DB -> Insert Records to my DB
OR
Retrieve records from partner DB -> Update my DB records (if exist) / INSERT (if not exist)
注意:如果UPDATE,我需要更新记录的所有字段
答案 0 :(得分:0)
绝对是第二个
从合作伙伴数据库中检索记录 - >更新我的DB记录(如果存在)/ INSERT(如果不存在)
删除是一项代价高昂的操作,尤其是当你有一个60k +记录的案例,并考虑到架构保持相同的加班时间,只有值会改变。
此外,从这个角度考虑,如果更新,那么并非所有值都可能不需要更新,只有一些 ....所以这比删除和再次写入值相对便宜,甚至可能包含您刚刚删除的一些相同的值! :)
不要仅从delet
的角度考虑它,还要考虑你也必须 Update
这个数据库......你会怎样?更喜欢,总是更新60k +或更低......
答案 1 :(得分:0)
根据我的观点,第二种方法比第一种方法更快。因为如果记录已经存在,那么它将从插入中跳过该记录。
答案 2 :(得分:0)
您提出的两个操作序列 NOT equivalent 。 第二个操作序列不会删除从伙伴DB中删除的行,而第一个序列会删除它们。
MySQL提供REPLACE
statement,它与第二个序列的效果相同,并且可能是最快的序列。对您的代码进行基准测试以确保。