哪个在MySQL中表现更好?

时间:2012-03-26 06:58:52

标签: mysql optimization

我想更新单个表的3行,每个表都有不同的值。

我看到它的方式我可以......

选项1。
只需创建一个PHP循环,并为我想要更新的每一行运行一个查询。 (这可能是'经典'的方法。)

选项2。
按照组合到单个查询的方法,但使用我听到的语法较慢,具体取决于具体情况。 (示例复制自:this website):

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)

哪个更好,更快?

2 个答案:

答案 0 :(得分:2)

单个查询将比在循环中多次查询服务器快得多。

所以,第二种方式是要走的路。

答案 1 :(得分:1)

我几乎可以肯定单个MySQL查询会比单独的UPDATE查询慢,但你总是可以试试。如果不考虑立即一致性,您还可以考虑使用单独的UPDATE LOW_PRIORITY查询,这些查询应该更快。

了解适用于您的应用程序的最佳方法,就像在编程中一样,是对两个查询的性能进行基准测试并稍微进行实验:)