2016-08-10 2 views
0

Есть ли разница между этими двумя LINQ-to-Entities запросов:.Count (х => ...) против Где (х => ...) Count()

context.Table.Count(x => ...) 

и

context.Table.Where(x => ...).Count() 

с точки зрения производительности и сгенерированного SQL?

Я попытался сгенерировать SQL сам, но я знаю, как получить SQL от IQueryable, но Count возвращает значение напрямую.

+3

** b ** est способ узнать, что это ** t ** est it ... IMO, кажется, есть (только) небольшая разница между этими двумя, хотя .. – Ian

+0

Да, но как? Я не знаю, как увидеть сгенерированный SQL. –

+0

Я имею в виду, по времени это ... не нужно, глядя на сгенерированный SQL. Дайте сложные случаи для обоих (например, запросы 1000000 раз или около того) – Ian

ответ

0

мне удалось увидеть SQL (благодаря @dasblinkenlight), ответ - нет, оба запроса LINQ генерировать точно такой же запрос SQL, по крайней мере, для простого запроса без группировки:

SELECT 
    [GroupBy1].[A1] AS [C1] 
    FROM (SELECT 
     COUNT(1) AS [A1] 
     FROM [dbo].[Table] AS [Extent1] 
     WHERE <condition> 
    ) AS [GroupBy1] 
+0

может быть небольшая разница, поскольку во втором решении есть второй вызов функции (сначала вызов функции where, а затем Count(). Я не думаю, что это делает sooo большой разницей, когда редко используется – Radinator

+0

Да, но я думаю, что дополнительное время вызова функции пренебрежимо мало по сравнению с общим подключением к базе данных и временем выполнения SQL. –

+0

как я сказал в своем сообщении: D – Radinator