0

根据这个帖子

返回的列数会影响查询的速度吗?

我们应该避免Select *使用 sql

这是否也适用于 linq 查询?

编辑:

Select *for linq 我的意思是

from a in mytable select a;

我的意思是从选定的列中

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

2 回答 2

3

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

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

备注:使用 Linq to Object(内存中查询)你有相反的情况 - 你已经在内存中有对象。选择一组属性较慢,因为应该创建匿名对象,并且应该映射它的属性。但此操作不使用硬盘驱动器或网络,因此延迟无关紧要。

于 2013-02-01T09:14:08.823 回答
0

LINQ 查询(如果在数据集或集合上完成)发生在内存中。影响不如 DB 级别高,因为 DB 将数据存储在硬盘驱动器中。

由于您的 RAM 比 HDD 快,因此性能并不明显。但是将其应用于 LINQ 仍然不是一个坏主意

于 2013-02-01T09:13:30.707 回答