2009-11-06 49 views
1

最理想我想LINQ用加快速度X數據庫連接,而不是1時,有多個數據庫連接的最簡單方法。什麼是使用LINQ

現在唯一的辦法就是打開X連接,並創建X databasecontexts,並將它們聯繫起來。 如果我能告訴linq使用X連接,它會更容易。

這可能嗎?還是有另一種方法來加快數據庫查詢?

感謝

編輯:改變了標題,因爲它是誤導(根據應答者之一,我同意)

回答

3

我覺得冠軍是一種誤導。連接池:你不需要那樣做。 Linq2SQL使用一個ADO.NET SqlConnection,這是默認連接池。

你所要完成我看來,像試圖查詢並行數據庫。如果您試圖執行不同的查詢或可以很好地並行化的查詢,這隻會有好處。這樣的查詢也不應該過度依賴鎖/事務。緩慢的查詢通常不是那種類型。

裝入有一個連接,底部50%與其他相同的查詢的前50%,不會給你帶來任何好處,數據庫服務器是瓶頸存在。

有很多,爲什麼LinqToSql的SQL查詢執行不好等原因。其中之一被稱爲選擇N + 1問題。 Ayende有關於在NHibernate中對抗它的great post,等價原則適用於L2S。

如果以上所有內容都不能幫助您,您可能需要查看SQL Server MARS,它允許您在一個連接上並行查詢數據庫。

+0

我想你釘它約翰內斯,我會刪除我的答案。 – 2009-11-06 19:57:12

+0

你是對的,標題是誤導性的......我實際上做了很多與彼此完全無關的小插件。我希望linq可以打開多個連接,並以這種方式加快速度。從我讀的內容來看,MSSQL針對並行查詢進行了優化 – Toad 2009-11-06 20:02:01

+1

好吧,這是一個相當不錯的遊戲規則:-)當涉及插入時,MARS不會幫助你。這些插入在不同的表上還是相同?如果它們相同,則通過SQLBulkCopy批量加載它們可能會更快。你失去了查詢SCOPE_IDENTIY()的能力。 – 2009-11-06 21:19:14