mySQL - 在每次获取数据时执行操作并存储在表中或进行数学运算

时间:2013-08-08 23:19:36

标签: mysql

就这么简单,在性能方面有什么好处?我正在根据用户数据输入(简单算术)进行一些计算,我应该执行操作并将结果存储在数据库中,还是每次执行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'

1 个答案:

答案 0 :(得分:1)

答案是,这取决于。

在你所描述的情况下,在他们需要的时候进行计算显然是有利的,因为工资或百分比(0.05)可以随着时间的推移而明显改变(人们得到加薪或降级,减少小时数等,或当前经济要求使用0.04而不是0.05),并且最好根据需要计算它,而不是必须更新整个数据库以存储新{ {1}}。计算的成本(特别是当extra_income的范围限于单user时)与计算的准确性相比可以忽略不计,并且无需记住更新所有数据当事情发生变化时。

如果数据是静态的(很少或从不更改),或者您需要保留值(由于某些历史原因或审计跟踪),请事先进行计算并存储。使用的额外空间通常不是问题,因为数据是静态的,所以每次执行WHERE时都不需要重复计算。