最近在尝试做公司内部ERP模块的优化,C/S的,其中几个模块打开的速度很慢
主要有以下几类模块:
1.台账类的模块,这类模块查询条件很多,关联的表比较多,而且查询条件很多支持模糊查询。
2.分析汇总类模块:这类模块一般分析一段时间内的数据,汇总分析,数据量还是挺大的
对于第一类模块,性能瓶颈可能在于关联表多,有些关联可能没有使用索引或者不能使用索引,另外,查询条件多,可能查询条件中的字段也没有使用索引,再加上使用了模块查询 %ff%
对于第二类模块,数据量比较大,汇总聚合的时间本就比较长,不太好优化,在不使用数据仓库的前提下,想的是能不能建一些中间计算表,每天晚上建立作业运算,然后模块直接从这个表取数就可以了,但老大说建的中间表太多的话,不好管理
身为菜鸟,表示鸭梨很大,请各位指点下,给小弟提供个思路
上述两种情况如何进行优化,或者通过其他的方式规避
1.查询条件多,模糊查询, 能做的就是把索引加上然后优化语句,其他的办法没有了.
2.汇总的话,我们一般的做法是,把每天的数据插入到一张历史表,然后对历史表聚合,这样就不会造成锁表的问题.
1. 嗯,只能这样了,更变态的是业务同事一次查询一年的数据,台账模块也不是这么用的啊,一年数据I/O很大,网络传输也很大,不慢才怪
2. 是个方法,我还在想要不要加上with(no lock) 。不过每晚上算的话,实时性就没了
@Captain_Jack: 如果有些数据经常查询的话, 建议移动到历史表,不要在动态操作的表里面查询,
我们的表平均1秒会插入100条数据,所以针对这个表,我们不做任何操作,知道晚上12点做更新, 插入历史,然后针对历史表统计
1,优化查询语句,2,不用中间表用视图
1. 我再尽力优化下吧
2. 用视图查询效率会高吗?
您能再说的详细点吗?小弟菜鸟