2014-02-22 23 views
0

目前我們有一個複雜的業務對象,它需要大約30個連接到我們的sql數據庫來檢索一個項目。 (這是我們的主要用例)。數據庫在sql server中大約2Gb。 我們使用實體框架來檢索數據,大約需要3.5秒來檢索一個項目。我們注意到,在並行調用中使用子查詢比在另一個表中有很多行時使用聯接的性能要高。 (所以我們有10個子查詢)。我們不使用存儲過程,因爲我們希望將數據訪問層保留在「純C#」中。如何提高檢索複雜業務對象的性能?

目標是在1秒內檢索該項目而不會改變太多的環境。 我們正在研究沒有SQL解決方案(RavenDB,Cassandra,Redis與「文檔客戶端」)和SQL Server的新功能「內存數據庫」。

你有什麼建議?你認爲只有一個與EF的存儲過程調用可以完成這項工作嗎?

編輯1: 我們有,我們正在做的加入

回答

1

在我看來,如果你需要30加入檢索一個項目上的所有列的索引,它是出錯了數據庫的設計。從關係的角度來看,也許這是正確的,但從功能/性能的角度來看,這是完全不切實際的。

一對夫婦的解決方案的來到我的腦海:

當然,使用存儲過程對於這種情況要好得多,它會提高性能,但我不相信會做出一個戲劇性的變化。你應該嘗試身份證和比較。還修改所有索引。

相關問題