就这么简单,在性能方面有什么好处?我正在根据用户数据输入(简单算术)进行一些计算,我应该执行操作并将结果存储在数据库中,还是每次执行SELECT查询时都执行操作?
选项1:每次从表中获取数据时进行操作
SELECT
some_random_fields,
salary,
extra_days,
extra_days * salary * 0.05 AS extra_income
FROM
table
WHERE
user_id = 'xxx'
选项2:操作一次,INSERT INTO表,获取结果而不操作(额外列)
SELECT
some_random_fields,
salary,
extra_days,
extra_income
FROM
table
WHERE
user_id = 'xxx'
答案 0 :(得分:1)
答案是,这取决于。
在你所描述的情况下,在他们需要的时候进行计算显然是有利的,因为工资或百分比(0.05
)可以随着时间的推移而明显改变(人们得到加薪或降级,减少小时数等,或当前经济要求使用0.04
而不是0.05
),并且最好根据需要计算它,而不是必须更新整个数据库以存储新{ {1}}。计算的成本(特别是当extra_income
的范围限于单user
时)与计算的准确性相比可以忽略不计,并且无需记住更新所有数据当事情发生变化时。
如果数据是静态的(很少或从不更改),或者您需要保留值(由于某些历史原因或审计跟踪),请事先进行计算并存储。使用的额外空间通常不是问题,因为数据是静态的,所以每次执行WHERE
时都不需要重复计算。