2012-11-03 46 views
0

我們基於SQL Server創建多個水晶報表 - 通常2005或2008年。從廣義上有2個類型的報告水晶報表性能選項

一)表格報告 - 這顯示了在表中的一些數據(例如,發票列表) b)文檔佈局 - 以特定格式顯示數據 - 通常來自一個或兩個主表格 - 以及多個輔助表格(例如發票)

我們有時直接在晶體中使用表格。或者在SQL中創建一個過程並使用該過程。一張發票通常可以指約10-12張桌子。其中大部分使用左外連接鏈接到主發票表中。

什麼選擇更好 - 在水晶中使用表(並讓水晶創建並運行sql查詢) - 或者創建一個查詢 - 並且在水晶中使用該查詢。哪一個會提供更好的性能?

回答

1

「數據庫專家」生成的查詢與添加到命令中的同一SQL之間的性能不會有任何差異。一個警告:確保記錄選擇公式可以被解析併發送到數據庫(應用WhileReadingRecords的過濾器的效率肯定比純SQL更低)。

理由喜歡 '數據庫專家':

  • 2008年之前V,Command對象不支持多值參數
  • 更易於管理(有些主觀)

原因喜歡一個命令:

  • 你可以添加提示
  • 您對SQL有更精細的控制(例如,在線觀點,熱膨脹係數,更復雜的連接,子查詢)

就個人而言,我會盡量避免存儲過程,爲他們提供最低限度的性能優勢,但需要開發和維護一個更意義的投資。

最後,沒有替代性能。試着用兩種方式查詢並測量結果。

0

編碼它自己幾乎總是會運行得更快 - 畢竟,你知道你的數據看起來像什麼,而晶體沒有。此外,您還可以在Crystal無法執行的手動查詢(例如窗口函數)中執行這些操作。

0

水晶傾向於在幕後做一些瘋狂的東西。您可以查看「數據庫」菜單選項下的「顯示SQL查詢」以查看它創建的內容。如果發現在SQL中編寫查詢更容易,我可以更容易地優化它。我還喜歡在SQL中執行任何計算/公式字段,並將Crystal用作顯示界面。如果你確實把邏輯放入晶體中,請記住它對每個返回的記錄都運行該邏輯......所以如果有條件從公式中排除記錄,那麼首先要限制在計算中花費的時間。