C# LINQ到SQL表类性能

C# LINQ到SQL表类性能,c#,performance,linq-to-sql,C#,Performance,Linq To Sql,我找不到System.Data.Linq.Table方法的性能特征!我指的是insertonSubmit和deleteonSubmit等方法。这些方法是O(1)还是O(n)InsertOnSubmit和DeleteOnSubmit采用单个对象,因此它们的性能应该是O(1):它们所做的只是附加到插入队列,对于所有无序容器,插入队列要么是O(1)要么是摊销O(1) 另一方面,InsertAllOnSubmit和DeleteAllOnSubmit是O(N),其中N是传递到方法中的IEnumerable

我找不到System.Data.Linq.Table方法的性能特征!我指的是insertonSubmit和deleteonSubmit等方法。这些方法是O(1)还是O(n)

InsertOnSubmit和
DeleteOnSubmit
采用单个对象,因此它们的性能应该是
O(1)
:它们所做的只是附加到插入队列,对于所有无序容器,插入队列要么是
O(1)
要么是摊销
O(1)

另一方面,
InsertAllOnSubmit
DeleteAllOnSubmit
O(N)
,其中
N
是传递到方法中的
IEnumerable
的长度。

我假设从基础表的大小来看,您指的是O(N),而您指的是一旦它们被提交,不仅仅是调用函数(如前所述是O(1))。我还没有看到任何LINQ的实现,但是仅仅从它的经验和我对SQL的理解来看,insert方法在现有表中应该是O(n),在提交的数量上应该是O(n)

由于整个过程都是一次提交的,所以我假设它是一个事务,或者insert语句的并集,这意味着只有第一个insert受到O(n)的影响,其余的都是O(1)

我不认为有一种方法可以使delete语句比O(n)发生得更快,所以我假设这就是所需的时间


当然,由于LINQ只是转换为SQL,并将实际实现留给数据库服务器,因此这在很大程度上取决于数据库服务器。

要点是最后一点-无论SQL需要什么,都可以尝试更快地使用手写SQL。在很多情况下,这根本不起作用。这正是我想知道的。谢谢你的帮助!