2

我找不到 System.Data.Linq.Table<T entity> 方法的性能特征!我指的是像 insertonSubmit 和 deleteonSubmit 这样的方法。这些方法是 O(1) 还是 O(n)?

4

2 回答 2

1

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

InsertAllOnSubmitDeleteAllOnSubmit另一方面,是,O(N)其中NIEnumerable传递给方法的长度。

于 2013-02-02T14:59:16.767 回答
1

我假设您的意思是 O(n) 就基础表的大小而言,并且一旦提交,您就在谈论它们,而不仅仅是调用函数(如上所述是 O(1) )。我没有看到任何 LINQ 的实现,但仅从使用它的经验和我对 SQL 的理解来看,插入方法在现有表方面应该是 O(n),在如何方面应该是 O(n)有很多意见书。

由于整个事情是一次提交的,我假设它是一个事务,或者插入语句的联合,这意味着只有第一个插入遭受 O(n),其余的只是 O(1)。

我认为没有办法让删除语句比 O(n) 更快地发生,所以我假设这需要多长时间。

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

于 2013-02-02T15:01:22.467 回答