FreeOZ论坛
标题:
关于.net3.5中LINQ的效率问题?
[打印本页]
作者:
beysup
时间:
19-3-2010 18:55
标题:
关于.net3.5中LINQ的效率问题?
为了提高运行效率,我把一个拥有几千万条记录的表从database load into memory,干掉了近3G空间
,现在我要对这个内存中的数据进行频繁的查询获得它的subset,使用了LINQ,但效率并不满意,全部程序运行下来要几十个小时,如何提高执行效率,感觉使用LINQ比较慢,希望各位大虾赐教,谢谢
作者:
procoder
时间:
20-3-2010 21:39
使用内存数据库试试。
作者:
woodheadz
时间:
20-3-2010 21:47
LINQ来搞千万级数据量的工作,恐怕不是个好主意哦
作者:
espress74
时间:
20-3-2010 21:51
其实要处理数据量的大小, 跟用不用LINQ 没有多大关系,如果要用LINQ, 最后它还是要转化成SQL语句执行,只不过是经过系统优化的延后执行。
作者:
woodheadz
时间:
20-3-2010 22:30
楼主是用Linq2SQL做的?
作者:
huazhb
时间:
22-3-2010 15:34
这种大数据量全loading到内存里? 你用SQL或者StoreProc在数据库里搞定然后再返回给你程序比较好把
作者:
huazhb
时间:
22-3-2010 15:34
你如果有兴趣, 把表和需求写一下, 我来看看?
作者:
beysup
时间:
22-3-2010 18:44
谢谢ls各位大虾,经过改进,目前效率得到显著提升,但是还要大概10小时左右
表结构很简单,就3个columns,USER_ID,TAG_ID,TAG_VECTOR,总共5000多个USERS,每个USERS有几十个到几千个TAGS,每个TAG用一个VECTOR来表示,VECTOR的SIZE是3000多,就好比是一个3000多维的向量。
问题是这样的,要计算任何两个USERS之间的所有TAGS向量夹角的余弦值,对于给定的阈值,统计满足条件的TAGS数量占其中一个USER中TAGS数量的比例,保存这个比例值。
作者:
huazhb
时间:
23-3-2010 11:25
我的建议你可以写一个.net程序把它放到sql server中, 变成sql server的一个user function, 然后直接在sql中用sql 来调用这个function, 我相信比你load到内存中计算要快很多
作者:
xblues
时间:
23-3-2010 11:37
提示:
作者被禁止或删除, 无法发言
标题:
确认一下
这个表里面每一行数据存的是一个TAG值么?所以如果一个用户有3000个TAG,那么这个表里面就有3000条记录?
作者:
goldensun
时间:
24-3-2010 07:27
用Linq2SQL显然是没有意义的
主要是算法问题吧
能不能提供3-5个User的数据,以及阀值,
我看到一个SQL网上经常有这样的擂台赛,就一个具体的问题由大家提供方案或者程序,看谁的方法效率最好
作者:
espress74
时间:
24-3-2010 09:58
LINQ2SQL is already dead.
作者:
Melodyy
时间:
18-4-2010 22:59
原帖由
espress74
于 24-3-2010 08:58 发表
登录/注册后可看大图
LINQ2SQL is already dead.
为什么?哪位大侠能解释一下吗?
据我所知:
Of all the new features introduced in .Net Framework 3.5, LINQ to SQL is the most significant one.
还没开始看.Net Framework 4,莫非有新的东西代替LINQ?
不明白。。。
作者:
huazhb
时间:
19-4-2010 13:07
Linq to sql 确实微软已经不推了.这和linq没什么关系. 现在是Entity Framework 4.0. 我觉得这些ORM的东西处理一些业务逻辑还是不错的. 但是大数据量下面的查询还是的用SQL, ORM不行的.
欢迎光临 FreeOZ论坛 (https://www.freeoz.org/bbs/)
Powered by Discuz! X3.2