问题:数据存储和查询的问题,已知数据存储之前是一个月一行数据,查询之后需要的是是近一年的数据之和(即12个月之和,例如 输入2019年10月 应查询出 2018年9月到2019年9月份的数据之和,输入2019年9月 应查询出 2018年8月到2019年8月份的数据之和),那么数据库的一行应该存一个月的数据还是存近一年的数据之和呢?
下面对比两个方案的优劣,
方案一 存每个月的数据:
存数据:很简单,直接存即可,访问一次数据库
取数据:取出12个月的数据,访问一次数据库,但需要进行一次计算(1这里是11次加法)
方案二 存近一年的数据之和 :
存数据:需要查询23个月的数据,并修改12个月的数据,访问两次数据库,但有一次修改,并进行12次计算
取数据:需要查询1次数据库,不需要计算
上图表示方案二存数据过程,图中,横线表示时间,时间从左到右递增,横线下面的箭头是存储之前,横线上面大括号是查询数据,箭头是存储数据
结论:方案一存取数据时间之和最小,普通存取选此方案,方案二存数据耗时,但取数据简单快速,对取数据要求高的应用可以选择方案二,(例如数据仓库)
设计感言:不仅要有能指导写代码的流程图,心里还要有数据流图