我在循环中有一个更新查询,它会被执行数千次。
一切顺利,但问题是所有更新需要大量时间。
如果我将所有更新查询连接/组合在一个字符串中,如下所示:
$update_query = "";
while(condition)
{
$update_query = $update_query . " update table set ... ; ";
}
然后单次执行 $ update_query ,这会有帮助吗?
或者我还能做些什么以获得更好的表现?任何暗示或暗示?
答案 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)