我正在從數據庫(〜130 000 000行)計算數據。帶n行並跳過m行的問題實體框架
由於大量的行我選擇1毫升計算他們保存結果,然後選擇另一個1毫升等。
,因爲我想有這個對象在內存中我使用選擇.. orderby .. skip m... take n...ToList()
。
當我跳過1 mln然後2 mln然後3 mln ...然後讓我們說6 mln它相當好,但然後突然查詢需要很長時間。
你有同樣的問題嗎?
有什麼辦法可以讓它工作得更快嗎?
感謝您的幫助, 再見
我正在從數據庫(〜130 000 000行)計算數據。帶n行並跳過m行的問題實體框架
由於大量的行我選擇1毫升計算他們保存結果,然後選擇另一個1毫升等。
,因爲我想有這個對象在內存中我使用選擇.. orderby .. skip m... take n...ToList()
。
當我跳過1 mln然後2 mln然後3 mln ...然後讓我們說6 mln它相當好,但然後突然查詢需要很長時間。
你有同樣的問題嗎?
有什麼辦法可以讓它工作得更快嗎?
感謝您的幫助, 再見
如果你看一下生成的SQL,你會看到這個問題快。 SQL Server沒有本地SKIP,因此實體框架即將在這方面發揮作用。 I've explained some of the details in this post。
爲了有效地做到這一點,您需要用不同的方法對數據進行分區,其中一種方法可以由服務器使用索引來實現。不知道更多關於這個問題的信息,我不能說最好的方法是什麼,但是要尋找一種可以在SQL查詢中索引數據的方法。
你可以使用行數,但我不知道這居屋適用於實體框架。
這樣,你去哪兒行數()> 2 000 000然後採取(1 000 000)
或者,如果你有一個ID列,依次遍歷添加條件,其中對ID>最後處理ID。
這應該是比跳過
'Skip'已經做了rowcount。這正是問題所在。 Rowcount在這張桌子上很慢。 – 2010-10-26 15:03:51
我想創建網絡,頂點是用戶和邊緣連接beetwen(如果有人打電話給另一個用戶,然後邊緣值增加)。在一行中,我用UserAId UserBid和其他一些細節。我需要進行每行填充數據,這是效率問題 – gruber 2010-10-26 20:43:02