由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
DotNet版 - 问一个linq to sql编程问题 (转载)
相关主题
【隆重推出】北美华人SQL Server User Group (CINASSUG) (转载)菜人问问,你们都在database上干什么??
心得:use XPath (+namespace)linq在debug的时候看不出错误的地方啊。
刚看到的有趣观点.net操作数据库的方法,哪个最好?
How to lock tabel with LINQ to SQLLINQ to SQL VS Entity Framework
痛苦IT大妈求助Linq to entity framework: what happens if i modified DB schema in SSMS ?
找.NET的工作 大家找找自己周围的.NET USER GROUP 吧
问个sql问题Redirecting User to Login Page [fwd]
asp.net为啥用linq来操作数据库呢,为啥不直接用sql语言?Re: Redirecting User to Login Page [fwd
相关话题的讨论汇总
话题: sql话题: linq话题: user话题: ids话题: select
进入DotNet版参与讨论
1 (共1页)
o****e
发帖数: 916
1
【 以下文字转载自 Database 讨论区 】
发信人: okeoke (let's okeoke @ okeoke.net), 信区: Database
标 题: 问一个linq to sql编程问题
发信站: BBS 未名空间站 (Wed Jun 29 03:07:54 2011, 美东)
假设有一个table User,primary key is ID(int), one field called Name
given a list of user ID, say HashSet ids
what's the most efficient way to get the list of user?
from u in Users
where ids.Contains(u.ID)
select u
this is the most basic way i can think of. I'm sure there is a better way.
I'm using linq to sql
many thanks!
c**t
发帖数: 2744
2
YourDBDataContext db = new YourDBDataContext();
var users = from p in ids
join u in db.Users on p.Key equals u.id
select u;

【在 o****e 的大作中提到】
: 【 以下文字转载自 Database 讨论区 】
: 发信人: okeoke (let's okeoke @ okeoke.net), 信区: Database
: 标 题: 问一个linq to sql编程问题
: 发信站: BBS 未名空间站 (Wed Jun 29 03:07:54 2011, 美东)
: 假设有一个table User,primary key is ID(int), one field called Name
: given a list of user ID, say HashSet ids
: what's the most efficient way to get the list of user?
: from u in Users
: where ids.Contains(u.ID)
: select u

o****e
发帖数: 916
3
多谢老大,我原来也是想多半和join有关。
刚测试了一下,悲剧了
db.Users.Where(u => ids.Contains(u.ID)).ToList() 耗时 800ms
(from p in ids
join u in db.Users on p equals u.ID
select u).ToList();
居然用了超过4s,不知道哪里有问题
ids的长度是200,db.Users有差不多150k条记录
o****e
发帖数: 916
4
搜了一下,还是直接用contains快,linq to sql会把contains 翻译成 in:
...
FROM [User] AS [t0]
WHERE [t0].[ID] IN (@p0, @p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10,
@p11, ... @p199)
}
参考
http://archive.msdn.microsoft.com/LinqtoSQLJoinExample
http://coolthingoftheday.blogspot.com/2008/01/being-in-in-linq-
a9
发帖数: 21638
5
就一个表,当然in最快了。

,

【在 o****e 的大作中提到】
: 搜了一下,还是直接用contains快,linq to sql会把contains 翻译成 in:
: ...
: FROM [User] AS [t0]
: WHERE [t0].[ID] IN (@p0, @p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10,
: @p11, ... @p199)
: }
: 参考
: http://archive.msdn.microsoft.com/LinqtoSQLJoinExample
: http://coolthingoftheday.blogspot.com/2008/01/being-in-in-linq-

c**t
发帖数: 2744
6
linq to sql is lazy execution; if the final SQL is IN, it should be faster;
My original idea is to avoid select entire table than join, which is very
bad.

,

【在 o****e 的大作中提到】
: 搜了一下,还是直接用contains快,linq to sql会把contains 翻译成 in:
: ...
: FROM [User] AS [t0]
: WHERE [t0].[ID] IN (@p0, @p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10,
: @p11, ... @p199)
: }
: 参考
: http://archive.msdn.microsoft.com/LinqtoSQLJoinExample
: http://coolthingoftheday.blogspot.com/2008/01/being-in-in-linq-

s***o
发帖数: 2191
7
Sql Profiler may help

【在 o****e 的大作中提到】
: 多谢老大,我原来也是想多半和join有关。
: 刚测试了一下,悲剧了
: db.Users.Where(u => ids.Contains(u.ID)).ToList() 耗时 800ms
: (from p in ids
: join u in db.Users on p equals u.ID
: select u).ToList();
: 居然用了超过4s,不知道哪里有问题
: ids的长度是200,db.Users有差不多150k条记录

1 (共1页)
进入DotNet版参与讨论
相关主题
Re: Redirecting User to Login Page [fwd痛苦IT大妈求助
User control question:找.NET的工作
default !问个sql问题
how to let button response 'return' key?asp.net为啥用linq来操作数据库呢,为啥不直接用sql语言?
【隆重推出】北美华人SQL Server User Group (CINASSUG) (转载)菜人问问,你们都在database上干什么??
心得:use XPath (+namespace)linq在debug的时候看不出错误的地方啊。
刚看到的有趣观点.net操作数据库的方法,哪个最好?
How to lock tabel with LINQ to SQLLINQ to SQL VS Entity Framework
相关话题的讨论汇总
话题: sql话题: linq话题: user话题: ids话题: select