Linq-to-sql скорость при подсчете таблицы - PullRequest
1 голос
/ 31 марта 2012

Это:

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

немного быстрее, чем это:

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

при условии, что в таблице достаточно полей?

1 Ответ

3 голосов
/ 31 марта 2012

Краткий ответ: нет.

SQL, сгенерированный механизмом LINQ-to-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 должен быть типом DBML LINQ-to-SQL, а Table - соответствующей таблицей. И я считаю, что вам нужно импортировать System.Data.Linq, чтобы иметь доступ к CompiledQuery.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...