首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

Code First 经过select 返回IQueryable后 foreach 非常非常慢

2013-06-25 
Code First 通过select 返回IQueryable后 foreach 非常非常慢环境: MySQL , EF4.1 语句如下:var datas f

Code First 通过select 返回IQueryable后 foreach 非常非常慢
环境: MySQL , EF4.1 

语句如下:


var datas = from data in MyDataContext.Datas select data;

foreach( var data in datas )
{
continue;
}


即使这样速度也非常缓慢,100K的数据需要10秒。
这是怎么回事?
谢谢
[解决办法]
数据量有多大?

foreach遍历想要达到什么目的? 简单的逻辑处理可直接放在select里处理
[解决办法]
一开始是有点慢,还是说说你的需求吧
看能不能优化
[解决办法]
你用sql profiler跟踪一下在实际数据库里的sql语句。
[解决办法]
楼主用的是LINQ to SQL吗?
LINQ to SQL是不支持MySQL的。可以考虑用Entity Framework。运行速度也比LINQ to SQL要快。

http://blog.csdn.net/jfchef/article/details/7632872
[解决办法]
为什么要在内存里遍历100K的数据?IQueryable本来就是生成数据库端的sql查询用的,for each就成了LINQ to Object了……
[解决办法]
引用:
为什么要在内存里遍历100K的数据?IQueryable本来就是生成数据库端的sql查询用的,for each就成了LINQ to Object了……

同意!

lz慢的,在于传输速度。根本不是查询出数据的速度。这就好像说去买鞋的人号称不知道自己的脚的尺寸,偏要把鞋店所有的鞋都试一遍才知道自己的脚的大小。他为什么不把自己的脚的大小先告知给营业员呢?
[解决办法]
引用:
回答各位哈。
用的是Entity Framework 中的Code First
然后用LINQ 做查询
MyDataContext 是 DbContext的派生类。

问题解决了一般。
我本来的数据 column 数目大概有 30 , 当我指定返回若干 column 后,速度有了非常巨大的改观。
MyDataContext.Datas.Select( t=>new{ column1 ……


你还应该提高几百倍速度。或者,你根本没有认真测试。
[解决办法]
引用:
引用:

数据量有多大?

foreach遍历想要达到什么目的? 简单的逻辑处理可直接放在select里处理


把数据分发给下层。
比如传送给client

分发数据,直接用select进行筛选分发
[解决办法]
是的。。。linq foreach非常慢,要比sql语句查出来的慢几秒,我试过了,,,奶奶的,我也不知道什么原因。。使用Linq,一页显示20条,itemdatabind里面也绑定数据的,要5秒左右,而sql要2秒!

热点排行