根据这篇文章
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};
答案 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仍然不是一个坏主意