2011-05-17 73 views
0

我正在編寫一個存儲過程,該過程具有SUM,AVG操作數以百萬計的數據與3至5列分組。 我想知道如果我在C#中這樣做,這意味着如果我只從數據庫讀取數據到C#對象,並在對象(或數據表)中進行計算(總和,平均等)。這會提高性能嗎?SQL VS C#聚合操作性能

我喜歡創建更快的應用程序。

在此先感謝。 Shuvra

回答

11

數據庫的建立是爲了高效地對數據進行排序,選擇和分組。讓它做它爲之而建的工作。如果你用C#代碼實現它,你首先必須要求數據庫提供所有的數據,然後你必須把它傳送給客戶端。這將比僅僅讓DB進行計算慢很多。

+0

謝謝。但在這種情況下,我的業務邏輯將在SP而不是業務層。 – Shuvra 2011-05-17 15:56:52

5

在存儲過程中執行總和平均操作會更好,性能更好。因爲如果你想用C#執行這些操作,你必須獲取數百萬條記錄,並且在數百萬條記錄中,你將得到總和,平均操作,這肯定會在很大程度上損害性能,而如果你做了總和,平均操作SP,您只需獲取彙總記錄,從而利用更少的帶寬並提高性能。

+0

感謝您寶貴的答覆。但我想知道爲什麼在最近的項目業務層是一個問題。開發人員正在將業務邏輯從SP移至業務層(C#類)? – Shuvra 2011-05-17 15:55:47

+2

當擁有更復雜的業務規則時,C#比T-SQL更適合表達它們。儘管如此,應該仔細製作用於提取數據的SQL查詢,以僅獲取業務層真正需要的數據。 – 2011-05-17 16:01:17

+0

我在我的應用程序中也這樣做。我的理由是: - 調試和測試C#代碼更容易 - C#代碼是面向對象的,而SP不是 - 您無法輕鬆訪問存儲過程中的遠程服務(即發送電子郵件通知給客戶端) – Zruty 2011-05-17 16:01:40