魔方网表 让信息化更简单

 找回密码
 注册
查看: 3540|回复: 3

如何提高魔方网表报表公式的执行速度?

[复制链接]
lihuiger 发表于 2012-9-7 15:57:26 | 显示全部楼层 |阅读模式
在魔方网表中,制作报表一般要写3个公式:
1 清除当前报表数据
2 插入统计维度
3 按照维度值更新统计项

如果统计维度项比较多,而且源表单数据量比较大,采用这种标准写法的报表公式执行很慢,主要原因如下:
1 第1步清除当前报表数据,系统默认会针对每条记录进行数据库删除操作,删除数据效率低
2 第2步插入统计维度,很多情况下,统计维度都是从源表单中选择不重复的值填写过来,如果源表单数据量大,执行速度会很慢
3 第3步按照维度值更新统计项,按照每个统计维度值从源表单过滤出数据然后进行统计计算,如果统计维度比较多,而且源表单数据量比较大,执行速度也很慢

下面我们针对每个步骤进行优化:
1 将删除报表数据的操作改为清空,清空的特点是一次性将命令发给数据库,数据库执行完操作返回,避免了删除记录方式下没删除一条记录访问一次数据库,提高了删除速度。但此办法不能触发删除类的回写公式,如果没有删除类的回写公式,可尝试用使用这个办法。
2 将第2步和第3步合并成一步,也就是说写一条新增类型的报表公式,同时给维度项和统计项赋值,这种情况下,魔方网表会将统计命令一次性发给数据库,数据库进行分组汇总后将结果返回给魔方网表。这个办法避免了大量反复查询汇总操作,从而提高了执行效率。

我们曾经试验,从26万条数据,汇总800个维度的50个统计项,在当前主流配置的计算机上,如果采用传统办法需要3-4个小时执行完毕;但如果采用优化办法,仅需要最多2分钟执行完毕,可见算法的改变对性能影响是十分巨大的。
pobopo 发表于 2012-9-9 02:55:15 | 显示全部楼层
好得很  ,  很高级!
回复

使用道具 举报

aifree 发表于 2012-9-24 10:57:30 | 显示全部楼层
学习、学习、{:soso_e112:}
回复

使用道具 举报

johnny 发表于 2013-1-9 22:01:21 | 显示全部楼层
维度,又称维数,是数学中独立参数的数目。在物理学和哲学的领域内,指独立的时空坐标的数目。
0维是一点,没有长度。1维是线,只有长度。2维是一个平面,是由长度和宽度(或曲线)形成面积。3维是2维加上高度形成“体积面”。虽然在一般人中习惯了整数维,但在分形中维度不一定是整数,而可能会是一个非整的有理数或者无理数。
我们周围的空间有3个维(上下,前后,左右)。我们可以往上下、东南西北移动,其他方向的移动只需用3个三维空间轴来表示。向下移就等于负方向地向上移,向西北移就只是向西和向北移的混合。
在物理学上时间是第四维,与三个空间维不同的是,它只有一个,且只能往一方向前进。
我们所居于的时空有四个维(3个空间轴和1个时间轴),根据爱因斯坦的概念称为四维时空,我们的宇宙是由时间和空间构成,而这条时间轴是一条虚数值的轴。
有些理论预言我们所居于的宇宙实际上有更多的维度(通常10,11 或 26 个)。但是这些附加的维度所量度的是次原子大小的宇宙。(请参看弦理论)
维度是理论模型,在非经典物理学中这点更为明显。所以不用计较宇宙的维数是多少,只要方便描述就行了。
在物理学中,质的维度通常以质的基本单位表示: 例如,速率的维度就是长度除时间。
回复

使用道具 举报

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

本版积分规则


Archiver|手机版|小黑屋|魔方软件 ( 京ICP备08008787号 )

京公网安备 11010702001722号

GMT+8, 2024-5-3 02:14 , Processed in 0.064288 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表