部分更新表时SELECT和UPDATE的性能比较

时间:2016-09-01 07:05:25

标签: mysql performance select sql-update

需要更新表格。但是,更改的数据量(比较我们获得的新数据和数据库中的数据)是未知的。

我可以想到两种方法来实现它。

  1. 选择所有数据并在Web服务器中进行比较。然后才更新 那些改变了。
  2. 只需更新所有数据。
  3. 我猜他们的性能边界。如果受影响的行是,比方说小于1,000,那么方法2可能更好。

    我的问题是:

    1. 这是否有一般标准?
    2. 一般可以选择与更新操作进行比较吗?
    3. 如果需要,假设数据库是MySQL。

1 个答案:

答案 0 :(得分:0)

如果要替换整个表(可能使用大部分相同的数据),以这种方式执行它是相当直接的,而不用担心采用哪种方法:

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 ...将它们放入真实表中。

如果您需要进一步讨论,请提供更多详细信息。