使用单个查询更新多个记录以提高性能

时间:2014-04-16 09:56:30

标签: php mysql sql performance

我在循环中有一个更新查询,它会被执行数千次。

一切顺利,但问题是所有更新需要大量时间。

如果我将所有更新查询连接/组合在一个字符串中,如下所示:

$update_query = "";
while(condition)
{
    $update_query = $update_query  . " update table set ... ; ";
}

然后单次执行 $ update_query ,这会有帮助吗?

或者我还能做些什么以获得更好的表现?任何暗示或暗示?

2 个答案:

答案 0 :(得分:2)

您正在寻找的是批量更新查询,例如:

UPDATE mytable
SET myfield = CASE other_field
    WHEN 1 THEN 'value'
    WHEN 2 THEN 'value'
    WHEN 3 THEN 'value'
END 
WHERE id IN (1,2,3)

答案 1 :(得分:2)

您可以使用INSERT ... ON DUPLICATE KEY UPDATE

INSERT INTO table (id, value) VALUES (1, 'value1'), (2, 'value2')
ON DUPLICATE KEY UPDATE
value = VALUES(value)