如何不重算,刷新最后的数据

[复制链接]
查看11 | 回复7 | 2013-2-25 14:51:24 | 显示全部楼层 |阅读模式
项目中,为了出一份报表,分为很多步骤
假如说,这里分为五步
步骤一
步骤二
步骤三
步骤四
步骤五
每个步骤,都是由一系列的存储过程组成
先跑步骤一、然后步骤二 ......
后面步骤中,需要用到前面步骤中的结果数据
现在的情况是:步骤一,步骤三,步骤四,需要用到前端页面的的数据
也就是说,这几个步骤用到的表的数据,用户可能在页面中修改
一旦修改了 中途的数据,那么最后的报表数据,就需要更新(刷新)
此时,就需要系统重算(据报表公式重新取数,得到的数据是最新的。),
也就是说,按照顺序,再把步骤一、步骤二 ...... 全部重新执行一下
但问题是:重算太慢了,能不能有其他的方法不重算,解决这个问题

回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
要么计算过程中锁定界面不让用户改,要么学习ORACLE的一致读,在最开始就把用户输入另外存起来然后一直使用。
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
改下步骤,第一步先把要用的数据都提取出来
如果需要的处理很长,可以考虑用MV什么的
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
1,按理,只要输入条件不变,那么你出来的报表无论是什么时候出的,都应该是一致的,如果做不到这点,
那报表定义是有问题的。
2,基于你前端要录入数据来改变出报表的情况,那这种就要从设计上改变,具体情况还是要具体分析的, 要保证,你加工报表时已用了哪些录入数据,而这些录入数据最好就要做到增量的加工体现在报表上。
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
newkid 发表于 2014-1-22 22:53
要么计算过程中锁定界面不让用户改,要么学习ORACLE的一致读,在最开始就把用户输入另外存起来然后一直使用 ...

不让用户改 是不可能的
而且,用户可能随时会修改
我们现在的做法是:每天晚上都会重算10天内的数据,以保证用户修改的数据会生效
我现在就是想,如何不重算,解决这个问题
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
chwp 发表于 2014-1-23 09:14
改下步骤,第一步先把要用的数据都提取出来
如果需要的处理很长,可以考虑用MV什么的

MV?
什么东西
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
piliskys 发表于 2014-1-23 10:28
1,按理,只要输入条件不变,那么你出来的报表无论是什么时候出的,都应该是一致的,如果做不到这点,
那 ...

请问,你们是怎么做的,能举个简单的例子说说吗?
谢谢。
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
string2020 发表于 2014-1-22 21:56
MV?
什么东西

MV - Materialized View.
BTW, I would like to suggest you to consider Data Warehouse in your system.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行