有一个表需要更新。但是,更改的数据量(比较我们获得的新数据和数据库中的数据)是未知的。
我可以想到两种实现方法。
- 选择所有数据并在网络服务器中进行比较。然后只更新 那些改变了。
- 只需更新所有数据。
我猜他们有一个性能边界。如果受影响的行少于 1,000,那么也许方法 2 更好。
我的问题是:
- 对此有通用标准吗?
- 一般select可以和update操作比较吗?
假设数据库是 MySQL,如果需要的话。
最佳答案
如果您要替换整个表(可能使用大部分相同的数据),这样做非常简单,无需担心采用哪种方法:
CREATE TABLE new LIKE real;
Load the new data entirely into `new`
RENAME TABLE real TO old, new TO real; -- atomic and instantaneous (no downtime)
DROP TABLE old;
如果只有部分行可用,将它们加载到临时表中,然后执行多表 UPDATE
以将任何新值传输到实际表中。
如果您的新数据可能有新行,那么您需要另一个步骤来定位新行并将它们INSERT ... SELECT LEFT JOIN ...
放入真实表中。
如果您需要进一步讨论,请提供更多详细信息。
关于mysql - 部分更新表时 SELECT 和 UPDATE 的性能比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39264774/