sql UPDATE,一个计算用了多次,能不能只计算一次?
Posted
技术标签:
【中文标题】sql UPDATE,一个计算用了多次,能不能只计算一次?【英文标题】:sql UPDATE, a calculation is used multiple times, can it just be calculated once? 【发布时间】:2010-06-14 16:50:58 【问题描述】:使用:
UPDATE `play`
SET `counter1` = `counter1` + LEAST(`maxchange`, FLOOR(`x` / `y`) ),
`counter2` = `counter2` - LEAST(`maxchange`, FLOOR(`x` / `y`) ),
`x` = MOD(`x`, `y`)
WHERE `x` > `y`
AND `maxchange` > 0
如您所见,LEAST(maxchange, FLOOR(x / y) )
被多次使用,但它应该始终具有相同的值。有没有办法优化这个,只计算一次?
为了记录,我正在用 php 编写代码。
【问题讨论】:
【参考方案1】:数据库引擎查询优化器应该优化它。
如果您想确定,请查看explain plan。我认为 mysql 不支持解释更新,但它使用与 SELECT 相同的查询优化器,因此您可能必须将其转换为选择。
【讨论】:
以上是关于sql UPDATE,一个计算用了多次,能不能只计算一次?的主要内容,如果未能解决你的问题,请参考以下文章
oracle SQL语句,能不能同时update一个表的几个字段的值?
MYSQL 能不能用一条语句将两个关联的表,更新其中一个表的一字段