【问题标题】:Which performs better in MySQL?哪个在 MySQL 中表现更好?
【发布时间】:2012-03-26 15:05:40
【问题描述】:

我想更新一个表的 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)

哪个更好、更快?

【问题讨论】:

    标签: mysql optimization


    【解决方案1】:

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

    所以,第二条路是要走的路。

    【讨论】:

      【解决方案2】:

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

      与编程一样,了解什么对您的应用程序有效的最佳方法是对查询的性能进行基准测试并进行一些实验:)

      【讨论】:

      • 我只是好奇,为什么你认为合并会更慢?当然,我会运行基准测试:)
      • 更新三行似乎有很多开销。如果您同时更新数千行,这可能是值得的,但只有三个?不过不确定,所以我很想听听你的测试结果:)
      • 我现在正在把所有东西放在一起,但我会回来更新结果...我现在正在集中我的查询构建,所以无论是 3 都将使用此模式到 3,000...
      猜你喜欢
      • 2011-01-10
      • 1970-01-01
      • 2015-02-27
      • 2015-12-17
      • 1970-01-01
      • 1970-01-01
      • 2011-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多