假设我有这样的查询:
select ((amount1 - amount2)/ amount1) as chg from t1
where
((amount1 - amount2)/ amount1) > 1 OR
((amount1 - amount2)/ amount1) < 0.3
有没有一种方法可以只执行一次算术计算,而不是像上面的查询那样执行三次?
编辑:我不确定数据库是否会自动优化查询以仅执行一次此类计算?我在 Sybase 上使用 T-SQL。
最佳答案
从概念上讲,您可以从计算中选择,即:
select
calc.amt
from
(select (amt1 - amt2) / amt1 as amt from #tmp) calc
where
calc.amt > 1 OR calc.amt < 0.3
不确定 SQL 是否会将您的代码优化为类似的代码 - 从基本临时表运行针对我的查询的查询似乎表明它们以相同的方式执行。
关于sql - 我如何调整此 SQL 以仅执行一次算术计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1068087/