|
對于匯總類型的分析報(bào)表,在報(bào)表生成時往往需要進(jìn)行分組聚集運(yùn)算,如果在數(shù)據(jù)庫中先進(jìn)行一次分組聚集,能夠大大減少取到報(bào)表服務(wù)器的記錄數(shù),加快取數(shù)和報(bào)表運(yùn)算的速度。 看如下報(bào)表:
這是一個典型的交叉分組報(bào)表,其sql有兩種寫法: 第一種:select 產(chǎn)品,客戶,銷量 from 購買記錄表 第二種:select產(chǎn)品,客戶,sum(銷量) from 購買記錄表 group by 產(chǎn)品,客戶 而報(bào)表的做法都一樣,如下圖所示:
分析: 采用第一種做法,不僅僅取到報(bào)表服務(wù)器上記錄數(shù)多了,取數(shù)速度慢,而且在報(bào)表端對購買記錄表進(jìn)行分組運(yùn)算的時候速度也慢了; 采用第二種做法,數(shù)據(jù)庫雖然要進(jìn)行分組運(yùn)算,但是數(shù)據(jù)庫中有索引,運(yùn)算速度快,且取到報(bào)表服務(wù)器端的記錄數(shù)大大減少,取數(shù)速度大大加快,因此在報(bào)表端進(jìn)行分組運(yùn)算的時候只要對很少的記錄數(shù)進(jìn)行,報(bào)表的運(yùn)算速度大大加快了。 總結(jié):第二種做法的性能遠(yuǎn)遠(yuǎn)優(yōu)于第一種 |
|
|