Best-Practices
為報表輸出創建物理表的原因是什麼?
我注意到,對於我們的組織和我們的一些 ERA 軟體提供商製作的 Crystal Reports,他們傾向於使用物理表來儲存他們的報告數據集,而不是使用視圖或儲存過程來收集數據。有時我看到報告使用儲存過程,然後使用物理表而不是臨時表來儲存和操作數據集。在這些情況下,報告輸出通常以類似
rpt_ap_vendors
或類似的表格形式存在,並且在不使用時可能沒有數據,也可能沒有數據。這些總是按需生成報告的情況,因此這不是可以生成一次並多次提供報告的情況,並且沒有多個報告/儲存過程同時訪問此數據。
有什麼理由為這樣的報告使用物理表?這樣做是否有邏輯、技術或性能相關的理由?在生成報告時,我個人一直使用帶有臨時表或更好的派生表的視圖和儲存過程,以避免涉及清除/刪除臨時表的額外磁碟讀取。
(+) 創建物理表儲存報表數據的原因:
- **報告數據可重複使用。**我將 Crystal Reports 或 SharePoint 指向表格,然後不用擔心這些工具或我的最終使用者訪問數據的頻率或時間。(嗯,在一定程度上,因為重複讀取一個大的報告表會破壞我的緩衝區記憶體。)我還可以為不可避免的請求維護一個舊報告的滑動視窗:“你能再次生成去年的報告嗎?我找不到我當時提取的 CSV。”
這可能是它在您的站點上以這種方式設置的主要原因。Crystal Reports 可能不夠智能,無法在使用者對其進行分頁或更改報表設置時記憶體報表數據。因此,在最壞的情況下,CR 會使用這些操作中的每一個來重新生成您的報告——這是一項昂貴且耗時的操作。對於物理表,它只是根據需要多次重新查詢表。
- **在報告上設置權限很容易。**你想看這份報告嗎?好吧,您需要的只是讀取結果的權限,而不是生成它們。所以在這裡,在鎖定模式和文件組/表空間中對該表具有一些讀取權限。
通過手動記憶體報告,您可以控制和隔離生成報告的過程。作為 DBA,您可以讓報告讀者有更多的行動自由,讓您自己不必擔心。
(-) 使用物理報告表會失去什麼:
- **靈活性。**要更改報告嗎?啊,需要一些 DDL 更改。
- **儲存空間。**您將數據保存在磁碟上,所以。