这是优化 MySQL Query 的正确方法吗?

Posted

技术标签:

【中文标题】这是优化 MySQL Query 的正确方法吗?【英文标题】:is this the correct way to optimize MySQL Query? 【发布时间】:2010-10-01 11:39:59 【问题描述】:
  $sql="update users_contain 
  set
  wood_max      =   (Select building_production from building_level where merge_id=$subPrimaryKey and empire_id=$user_empireID) ,
  iron_max      =   wood_max,
  clay_max      =   wood_max
  where user_id =   $user_id";

现在有一个问题。

wood_max 是否总是比 Iron_max 和 Clay_max 先更新。所以用这种方式安全吗?? 当我知道它对所有三个字段具有相同的值时,我不想使用内部查询来更新 Iron_max 和 Clay_max。

【问题讨论】:

【参考方案1】:

根据本文档,您的 UPDATE 语句可以按照您的意愿工作:http://dev.mysql.com/doc/refman/5.1/en/ansi-diff-update.html

测试一下确定,但我认为你没问题。

【讨论】:

“此行为不同于标准 SQL。”吓人。 是的,这有点吓人,但是由于 OP 指定 MySQL 作为他们的数据库平台,他们会没事的。如果支持多个数据库平台,则必须小心。 谢谢!您的链接是 FINAL.. 就像 Final Classes..:)

以上是关于这是优化 MySQL Query 的正确方法吗?的主要内容,如果未能解决你的问题,请参考以下文章

SQL调优指南笔记4:Query Optimizer Concepts

mysql调优排序优化,子查询优化

MySQL 优化

MySQL调优数据类型优化

数据库mysql——MySQL 性能优化的最佳20多条经验分享

SQL调优指南笔记5:Query Transformations