尋找一些關於如何優化我們的項目的建議。我們有一個ASP.NET/C#系統,它從SQL2008數據中檢索數據,並將其呈現在DevExpress ASPxGridView上。檢索到的數據可能來自多個數據庫中的一個 - 所有這些數據庫都略有不同,並且定期添加和刪除。用戶會看到現場「公司」列表,並從相應的數據庫中檢索數據。在ASP.NET頁面上檢索大型動態指定表的最佳策略
目前,正在使用標準SqlDataSource和動態創建的SQL SELECT語句檢索數據。語句中有幾個JOIN,以及可選的WHERE約束,這些約束又是根據數據庫和用戶的權限級別動態創建的。
除了表演,所有這些都很棒(誠實!)。當涉及到某些數據庫時,有數十萬行,並且通過數據檢索和分頁的速度很慢(數據庫已經正確編制索引)。因此,我一直在研究如何加快系統的速度,這似乎歸結爲兩種選擇:XPO或LINQ。我需要爲LINQ可以訪問的每個數據庫創建「定義」,我需要爲每個數據庫創建「定義」,但是我不知道LINQ是如何輕鬆實現的。 ?我也對動態創建LINQ查詢有些不確定,儘管看起來至少有一部分似乎是可行的。
另一方面,XPO似乎允許我即時創建XPO數據源。但是,我無法找到有關如何加入其他表格的太多信息。
任何人都可以提供任何建議,哪種方法 - 如果有的話 - 是最好的嘗試和復古到這個項目?或者,當前使用的動態SQL模型與LINQ和XPO有着根本的不同,最好單獨使用?
斯圖您好,感謝非常有用的回覆。我已經檢查了大部分上述內容;據我瞭解,問題在於Web服務器從SQL服務器中提取整個表,然後爲數據分頁並將結果發送到瀏覽器。因此,用戶點擊的每個頁面都會導致整個表格被讀取。 XPO和LINQ似乎通過自定義查詢來避免這種情況,只從數據庫讀取實際顯示的行 - 看起來我需要重新編碼我的動態SQL查詢來模擬此行爲。 – KenD
嗨肯尼,在這種情況下,你能不能修改查詢來拉扯頂端50並重新綁定,當你需要下一個50例如?爲此,我會親自創建一個類似於以下'USE AdventureWorks; GO WITH OrderedOrders AS ( SELECT的SalesOrderID,訂購日期, ROW_NUMBER()OVER(ORDER BY訂購日期)AS 'ROWNUMBER' FROM Sales.SalesOrderHeader ) SELECT * FROM OrderedOrders WHERE ROWNUMBER 10和20之間;'將10和20更改爲您想要的數據範圍。我承認我從未使用過DevExpress控件,所以不知道你有多少控制權。 –