【发布时间】:2018-05-03 18:28:43
【问题描述】:
两者之间是否存在性能差异:
ctx
.Students
.Join(
ctx.Countries,
q => q.CountryId,
q => q.CountryId,
(c,s) => new { c,s })
.Where(q => q.c.CountryName= "USA")
.Select(q => q.s.StudentName)
.ToList();
和:
ctx
.Students
.Join(
ctx.Countries.Where(q => q.CountryName == "USA"),
q => q.CountryId,
q => q.CountryId,
(c,s) => s)
.Select(q => q.StudentName)
.ToList();
如果是这样,哪个查询更可取?
【问题讨论】:
-
这是在内存中执行的 Linq 还是生成 sql 查询的 Linq?您是否运行了这两个案例?
-
@Fabio, LINQ 生成 SQL 查询。但是如果它在内存中执行,答案会有什么不同呢?是的,我确实运行了这两个案例。
-
如果您同时运行这两种情况 - 检查生成的 SQL 查询或使用 SQL 探查器获取性能详细信息或复制生成的查询并运行它,例如,在 SQL Server Management Studio 中运行。