获取表计数时Linq-to-sql速度

时间:2012-03-31 06:17:44

标签: asp.net vb.net linq-to-sql

这是:

Dim mydata = (From c In dc.Table Select New With {c.ID}).Count

比这更快:

Dim mydata = (From c In dc.Table Select c).Count

假设该表有很多字段?

1 个答案:

答案 0 :(得分:3)

答案简短:不。

LINQ-to-SQL引擎生成的SQL对于两种表单(如果不是完全相同)应该基本相同,因为您立即调用.Count()在查询上。

另一方面,编译的查询版本在第一次执行后会更快。这是为此进行编译查询的一种方法:

Public Shared FetchCount As Func(Of DataContext, Integer) = _
    CompiledQuery.Compile(Function(context as DataContext) _
        (From c in context.Table Select c).Count())

DataContext需要是LINQ-to-SQL DBML的类型,Table需要是适当的表。而且,我认为您需要导入System.Data.Linq才能访问CompiledQuery