选择列的数量会影响linq查询的效率吗?

时间:2013-02-01 09:06:17

标签: c# linq

根据这篇文章

Does the number of columns returned affect the speed of a query?

我们应该避免使用Select * sql

这是否也适用于linq查询?

修改

来自Select *对于linq我的意思是

from a in mytable select a;

从选定的列我的意思是

from a in mytable select new{a.Prop1, a.Prop2};

2 个答案:

答案 0 :(得分:3)

您无法使用LINQ执行SELECT *。生成的查询始终具有要选择的所有列名称。因此,为了确定该表的列,不会因读取表的定义而导致延迟。但是从磁盘读取所有列数据并通过网络发送数据会有延迟。因此,如果您只需要表中的多个列,那么最好只选择那些列:

var query = from p in db.Person
            select new { p.Id, p.Forename, p.Surname };

备注:使用Linq to Object(内存中查询)你会遇到相反的情况 - 你已经在内存中拥有了对象。选择属性集会比较慢,因为应该创建匿名对象,并且应该映射它的属性。但是这个操作不使用硬盘或网络,所以延迟是微不足道的。

答案 1 :(得分:0)

LINQ查询,如果在数据集或集合上完成,则发生在内存中。影响不像DB级别那么高,因为DB将数据存储在硬盘中。

因为你的RAM比你的硬盘快,所以性能不明显。但是将它应用于LINQ仍然不是一个坏主意