順景動(dòng)態(tài)
以前瞻視覺2020-04-25 821
在erp系統(tǒng)中,從原則上是禁止設(shè)計(jì)超過兩個(gè)模塊的數(shù)據(jù)報(bào)表,最好是將報(bào)表的范圍限制在單個(gè)模塊下。如此的話,無論從性能還是從數(shù)據(jù)的準(zhǔn)確性上都會(huì)有所保障。但是,如果用戶確實(shí)有需要實(shí)現(xiàn)比較復(fù)雜的報(bào)表,在這種情況下,該如何處理呢?我們應(yīng)該注意什么呢?接下來由臺(tái)灣erp公司為大家進(jìn)行簡(jiǎn)單地介紹吧。
1.使用固化視圖來改善數(shù)據(jù)庫(kù)的性能。
復(fù)雜報(bào)表所導(dǎo)致的不利影響,首當(dāng)其沖的是報(bào)表查詢時(shí)速度會(huì)很慢,性能很低。為此在涉及到復(fù)雜報(bào)表時(shí),開發(fā)人員可以考慮采用固化視圖來改善數(shù)據(jù)庫(kù)的性能。如在Oracle數(shù)據(jù)庫(kù)中,固化視圖又叫做物化視圖。通過固化視圖,可以預(yù)先計(jì)算并保存報(bào)表連接或者聚集等耗時(shí)比較多的操作結(jié)果。簡(jiǎn)單的說,就將某個(gè)報(bào)表的查詢結(jié)果存儲(chǔ)在一張單獨(dú)的表中。如此的話,在執(zhí)行查詢時(shí),就可以避免使用這些耗時(shí)的操作,同時(shí)減少磁盤的沖突,從而以最短的時(shí)間得到用戶想要的結(jié)果。一般來說,固化視圖對(duì)于復(fù)雜的報(bào)表來說,能夠提供三方面的作用。如可以提高查詢的性能。如固化視圖對(duì)于應(yīng)用來說是透明的,增加和刪除物化視圖不會(huì)影響應(yīng)用程序中SQL語(yǔ)句的正確性和有效性。但當(dāng)基表發(fā)生變化時(shí),物化視圖也會(huì)同時(shí)更新。不過需要注意的是,物化視圖也會(huì)帶來一些負(fù)面影響。如物化視圖的數(shù)據(jù)會(huì)保存在硬盤中,為此就會(huì)占用額外的存儲(chǔ)空間等。總之,在設(shè)計(jì)比較復(fù)雜的報(bào)表時(shí),開發(fā)人員可以與數(shù)據(jù)庫(kù)工程師商量,如果可以的話,需要盡量采用固化視圖。
2.復(fù)雜的報(bào)表當(dāng)涉及到多表時(shí),最好采用模塊化的設(shè)計(jì)。
如某視圖,其涉及到的基表有近20張。那么在設(shè)計(jì)視圖時(shí),要避免將其放在一個(gè)SQL語(yǔ)句中。而應(yīng)該借鑒應(yīng)用程序的模塊化設(shè)計(jì),將其設(shè)計(jì)成不同層次的視圖,然后再進(jìn)行連接查詢。如上面這個(gè)案例,至少可以將其分為四層。最基層是基本數(shù)據(jù)表,第二層是零件出庫(kù)信息、當(dāng)月采購(gòu)信息等數(shù)據(jù),第三層是根據(jù)第二層的數(shù)據(jù)進(jìn)行計(jì)算分析;第三層視圖再將這些視圖進(jìn)行連接。這么操作的話,方便后續(xù)的維護(hù)與查詢。同時(shí)也可以提高查詢的速度。如在第二層視圖設(shè)計(jì)中,可以對(duì)基礎(chǔ)表的數(shù)據(jù)進(jìn)行過濾。此時(shí)由于基礎(chǔ)數(shù)據(jù)少,那么后續(xù)的報(bào)表查詢速度也會(huì)加快。為此對(duì)于比較復(fù)雜的報(bào)表設(shè)計(jì),要考慮分層設(shè)計(jì)的思路,以提高報(bào)表的查詢性能與靈活性。溝通工具
以上便是在erp系統(tǒng)中設(shè)計(jì)復(fù)雜報(bào)表的注意事項(xiàng),希望能夠?qū)Υ蠹矣兴酥苣赀^戶。其實(shí)比較繁瑣的報(bào)表視圖,原則上仍是少弄為妙。由于其在功能或數(shù)據(jù)的準(zhǔn)確性上都很難掌控的。假如真的要樹立繁瑣視圖,那么在規(guī)劃與開發(fā)時(shí),參謀需要聽取數(shù)據(jù)庫(kù)工程師的意見,思考嵌入數(shù)據(jù)的查詢功能,并采納辦法提高數(shù)據(jù)的準(zhǔn)確性。