C# 使用Take是否可以提高性能
如果我有一个C# 使用Take是否可以提高性能,c#,linq,linq-to-entities,C#,Linq,Linq To Entities,如果我有一个LINQ to Entities查询返回一些结果,那么使用Take是否会提高性能?我的意思是因为在查询结束时,我们说的是.Take(thisManyRecords),然后它是否首先返回所有记录,然后返回给我thisManyRecords,或者它从一开始就将搜索限制在thisManyRecords LINQtoEntities意味着EF和一些获取查询的提供者 你不需要一袋袋的数据来检查。SQL分析器将显示所使用的SQL语句 如果应用。则将应用于IQueryable源。最终得到一个表达式
LINQ to Entities
查询返回一些结果,那么使用Take
是否会提高性能?我的意思是因为在查询结束时,我们说的是.Take(thisManyRecords)
,然后它是否首先返回所有记录,然后返回给我thisManyRecords
,或者它从一开始就将搜索限制在thisManyRecords
LINQtoEntities意味着EF和一些获取查询的提供者
你不需要一袋袋的数据来检查。SQL分析器将显示所使用的SQL语句
如果应用。则将
应用于IQueryable源。最终得到一个表达式树,可以将其发送到db
Context.Set().Where(t=>?).OrderBy(t=>t.?).Take(n)
发送TOP(n)的结果
但是,如果强制枚举,例如.ToList()和did.Take(),则这适用于内存对象,不会发送到DB
我的数据库不够大,因此我可以亲自测试并感受差异。这在其他地方有很多介绍,您搜索过吗。。。例如,双向编写代码。双向运行代码。现在你知道哪一个更快了。@EricLippert好吧,除非你已经做了一些,如果你的数据库不够大,不能运行有意义的性能测试,那么就得到一个更大的数据库。