添加更新SQL查询

时间:2009-09-21 17:04:06

标签: sql sql-update

我有一个每周更新自己的脚本。我的主机发出警告,我一直在用脚本重载服务器。我收集的问题是我使用了太多的UPDATE查询(我的8000多个用户都有一个)。

我知道,编码很糟糕。所以现在我需要将所有数据整合到一个SQL查询中并立即更新所有数据。我希望这能解决我的问题。

一个简单的问题。如果我添加纯粹添加由分号分隔的UPDATE查询,如下所示:

UPDATE table SET something=3 WHERE id=8; UPDATE table SET something=6 WHERE id=9;

然后用一个大的SQL代码更新数据库而不是每次更新查询数据库,它会更快吗?

这是将UPDATE语句“聚集”在一起的最佳方式吗?这会显着减少服务器负载吗?

4 个答案:

答案 0 :(得分:2)

使用您的值制作带分隔符的文件,并使用等效的MySQL LOAD DATA INFILE。这将比UPDATE快得多。

LOAD DATA INFILE '/path/to/myfile'
REPLACE INTO TABLE thetable(field1,field2, field3)
//optional field and line delimiters
;

答案 1 :(得分:1)

您最好的选择是通过“某些”字段批量处理这些陈述:

UPDATE table SET something=3 WHERE id IN (2,4,6,8)
UPDATE table SET something=4 WHERE id IN (1,3,5,7)

当然,对您的要求一无所知,可能有更好的解决方案......

答案 2 :(得分:0)

它将改善IO,因为只有一次往返,但数据库“努力”将是相同的。

答案 3 :(得分:0)

SQL的好奇心是以下整数表达式   (1 -abs(符号(A-B)))如果A == B则= 1,否则为0。为方便起见,我们可以调用此表达式_eq(A,B)。 所以

更新表设置东西= 3 * _eq(id,8)+ 6 * _eq(id,9) 其中id为(8,9);

将使用单个更新语句执行您想要的操作。