首页新闻找找看学习计划

entity framework iqueryable.count()很慢 什么原因

0
悬赏园豆:10 [待解决问题]

 

entity framework iqueryable.count()很慢 什么原因,请给解答一下,谢谢

问题补充:

exec sp_executesql N'SELECT
[GroupBy1].[A1] AS [C1]
FROM ( SELECT
COUNT(1) AS [A1]
FROM [dbo].[tWorkLog] AS [Extent1]
LEFT OUTER JOIN [dbo].[tWorkLogDetail] AS [Extent2] ON [Extent1].[sGuid] = [Extent2].[sGuidtWorkLog]
WHERE ([Extent1].[dCreateDate] >= @p__linq__0) AND ([Extent1].[dCreateDate] < @p__linq__1) AND ([Extent1].[sNametBaseEmployee] = @p__linq__2)
) AS [GroupBy1]',N'@p__linq__0 datetime2(7),@p__linq__1 datetime2(7),@p__linq__2 varchar(8000)',@p__linq__0='2010-08-26 00:00:00',@p__linq__1='2012-09-27 00:00:00',@p__linq__2='裴建'

这是sql 但是在sql server中运行并不慢  是什么原因

J-Pei的主页 J-Pei | 初学一级 | 园豆:185
提问于:2012-09-21 17:15
< >
分享
所有回答(6)
0

count无罪,关键是你上面的结果集zl的查询慢

腾飞刘 | 园豆:52 (初学一级) | 2012-09-21 17:19
0

获取 生成count的sql语句,再分析一下慢的原因

Qlin | 园豆:2403 (老鸟四级) | 2012-09-21 17:23
0

用SQL Profiler看一下最终执行的SQL语句是什么?

dudu | 园豆:39371 (高人七级) | 2012-09-21 17:24
0

sql跟踪一下

jason2013 | 园豆:1998 (小虾三级) | 2012-09-21 17:51
0

Sql跟踪一下,你上在写的那个查询好像太复杂了点。所以导致count的时候慢。用SQL Profiler看一下最终执行的SQL语句是什么?贴出来让我们分析分析。

jerry-Tom | 园豆:4077 (老鸟四级) | 2012-09-24 10:20

exec sp_executesql N'SELECT
[GroupBy1].[A1] AS [C1]
FROM ( SELECT
COUNT(1) AS [A1]
FROM [dbo].[tWorkLog] AS [Extent1]
LEFT OUTER JOIN [dbo].[tWorkLogDetail] AS [Extent2] ON [Extent1].[sGuid] = [Extent2].[sGuidtWorkLog]
WHERE ([Extent1].[dCreateDate] >= @p__linq__0) AND ([Extent1].[dCreateDate] < @p__linq__1) AND ([Extent1].[sNametBaseEmployee] = @p__linq__2)
) AS [GroupBy1]',N'@p__linq__0 datetime2(7),@p__linq__1 datetime2(7),@p__linq__2 varchar(8000)',@p__linq__0='2011-09-01 00:00:00',@p__linq__1='2012-10-26 00:00:00',@p__linq__2='裴建'

但是在sql server中运行并不慢  是什么原因

支持(0) 反对(0) J-Pei | 园豆:185 (初学一级) | 2012-09-29 10:00
0

linq to entities的查询是延迟执行的,只有在执行结果集的ToList()、Count()、遍历等取结果的方法中才会执行。在你上面的代码中Count()之前,并未真正的查找数据源,所以速度很快,执行count后,开始查询数据并统计数据行,这个时候如果数据量大的话,会非常慢(你在SQL企业管理器中执行那么大量数据的查询一样会慢)。

所以在ling to entities查询中,底层方法直接返回IQueryable<T>即可,在进行筛选后再取数,就不会慢了

RyanCheng | 园豆:474 (菜鸟二级) | 2012-11-01 21:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册