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了……
------解决方案--------------------
同意!
lz慢的,在于传输速度。根本不是查询出数据的速度。这就好像说去买鞋的人号称不知道自己的脚的尺寸,偏要把鞋店所有的鞋都试一遍才知道自己的脚的大小。他为什么不把自己的脚的大小先告知给营业员呢?
------解决方案--------------------
你还应该提高几百倍速度。或者,你根本没有认真测试。
------解决方案--------------------
分发数据,直接用select进行筛选分发
------解决方案--------------------是的。。。linq foreach非常慢,要比sql语句查出来的慢几秒,我试过了,,,奶奶的,我也不知道什么原因。。使用Linq,一页显示20条,itemdatabind里面也绑定数据的,要5秒左右,而sql要2秒!