2013-02-04 50 views
0

我在我的表中有1000萬條記錄。我試圖通過使用linq查詢, 來獲取記錄,但這會導致性能問題。如何在沒有任何延遲或任何性能問題的情況下獲取數據?Linq to object性能問題?

+3

請問您的表有一個索引來支持你的查詢?如果您在沒有索引的情況下找到1000萬條記錄中的一條記錄 - 那麼數據庫必須讀取整個表格才能找到它。 –

+0

是的。 DB必須找到..什麼是最好的實現方式..我必須發送郵件到這些記錄 – geeta

回答

1

您可以使用Enumerable.SkipEnumerable.Take實現分頁使用LINQ獲取數據。爲了更快地訪問您可以重新訪問當前indexes(如果您有任何),數據和嘗試加載所需要的數據/列。

您可能會看到:Effective Paging Using Linq (Sample Code) - Code Project

如果你只打算在數據庫中搜索記錄,並選擇其中只有少數和你擔心表現那麼這將取決於多個數據庫服務器上。針對數據源的LINQ查詢轉化爲底層查詢語言。如果您正在鋪設數據源是SQL Server,那麼LINQ會被轉換爲SQL。您可以通過LINQPad或Visual Studio獲取生成的SQL,並查看它是否需要通過查看query execution plan進行優化。您還可以在您的LINQ查詢中針對您要搜索的列設置索引,這將大大改善1000萬行記錄的選擇。

+0

這是很好用sp或linq查詢? – geeta

+0

@geeta,完全取決於你的要求和技能。如果你對LINQ感到滿意,並確保你的表達式會生成一個優化的查詢,那麼去LINQ,否則去SP。 – Habib

+0

但第一件事就是性能..如果它需要通過SP更少的時間,然後我們會更喜歡一個 – geeta