【发布时间】:2018-04-19 09:02:21
【问题描述】:
我猜
SELECT SUM(val/2) FROM my_table
将计算除法 N 次(每行一次)
SELECT SUM(val)/2 FROM my_table
将计算 SUM(),然后只计算一次除法
对吗?
对于任何聚合函数?
【问题讨论】:
标签: mysql performance optimization query-optimization aggregate
我猜
SELECT SUM(val/2) FROM my_table
将计算除法 N 次(每行一次)
SELECT SUM(val)/2 FROM my_table
将计算 SUM(),然后只计算一次除法
对吗?
对于任何聚合函数?
【问题讨论】:
标签: mysql performance optimization query-optimization aggregate
第二个更好。在性能方面,完成的操作数量少于第一种情况。只完成了一个划分,而在前 N 个划分中完成。
其次,第二个查询的结果比第一个查询的结果更“精确”,因为当总和除以 2 时只会进行一次近似。在第一个查询中,近似的 val/2 值是总和,并且然后结果近似。
【讨论】:
如果除以 2 那么这两种方法都是正确的 如果除以 3 或其他数字,那么第一种方法是正确的
【讨论】: