0

哪些操作应该在 MySQL 中执行得更快?假设我有 999 个值要更改:

DELETE FROM table WHERE id IN(100, ..., 999);
INSERT INTO example VALUES (100, 'Peter'), (...), (999, 'Sam');

或者

UPDATE table_name SET name='Peter' 
WHERE person_id=100; ...; UPDATE table_name SET name='Sam' WHERE person_id=999;
4

2 回答 2

0

由于您只有 900 个行值要更改,因此第一个选项将执行得很快。因为您将只有两个查询要运行。但是,如果您选择第二种选择,那么您将有近 900 个查询要运行,这肯定会很慢。做同样的更好的主意是

TRUNCATE FROM table;
INSERT INTO example VALUES (100, 'Peter'), (...), (999, 'Sam');

因为 truncate 比 delete 工作得更快。

于 2013-03-22T12:12:50.867 回答
0

在一般情况下,根据表的当前状态,这两个操作(DELETE/INSERT vs UPDATE)可能会产生显着不同的结果...... id=999 的行是否存在?是否存在引用此表的外键约束?表上是否定义了任何触发器?

如果规范是更新表中的行,我会发出 UPDATE 语句,而不是发出 DELETE 和 INSERT。

除了速度之外,还有其他因素需要考虑。

但最快的可能是:

 UPDATE example t
    SET t.name  
        = CASE t.id
            WHEN 100 THEN 'Peter'
            WHEN ...
            WHEN 999 THEN 'Sam'
            ELSE t.name
          END
   WHERE t.id IN (100,...999) 
于 2015-07-03T22:08:05.520 回答