2013-02-02 113 views
2

我無法找到System.Data.Linq.Table的性能特徵< T entity> methods!我指的是像insertonSubmit和deleteonSubmit這樣的方法。這些方法是O(1)還是O(n)?LINQ to SQL表級性能

回答

1

InsertOnSubmitDeleteOnSubmit採取單一對象,所以它們的性能應該是O(1):他們做的是附加到插入隊列,其是一種O(1)或所有無序容器的攤銷O(1)

InsertAllOnSubmitDeleteAllOnSubmit,在另一方面,是O(N),其中NIEnumerable的傳遞到方法的長度。

+0

這正是我想知道的。感謝您的幫助! –

1

我假設你的意思是O(n)就底層表的大小而言,並且你在談論它們一旦被提交後,不僅僅調用該函數(這是所提到的O(1))。我還沒有看到任何LINQ的實現,但僅僅從它的經驗和我對SQL的理解中,插入方法應該是現有表的O(n),就O(n)而言應該如何許多意見是。因爲整個事件一次提交,我假設它是一個事務或插入語句的聯合,意味着只有第一個插入遭受O(n),而其餘的只是O(1) )。

我不認爲有辦法讓刪除語句比O(n)快得多,所以我假設這需要多長時間。

當然,由於LINQ只是轉換爲SQL並將實際實現留給數據庫服務器,因此很多都由數據庫服務器決定。

+0

主要觀點是最後一點 - 不管SQL如何使用,即使使用手寫SQL,也樂於嘗試更快。在很多情況下,它不起作用。 – TomTom