选择列的数量是否会影响 linq 查询的效率

本文关键字:影响 linq 查询 效率 是否 选择 | 更新日期: 2023-09-27 17:57:02

根据这篇文章

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

我们应该避免对SQL Select *

这是否也适用于 linq 查询?

编辑:

从 linq 的Select *我的意思是

from a in mytable select a;

从选定的列中,我的意思是

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

选择列的数量是否会影响 linq 查询的效率

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

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

备注:使用 Linq to Object(内存中查询)时,您会遇到相反的情况 - 内存中已经有对象。选择属性集的速度较慢,因为应创建匿名对象,并且应映射其属性。但是此操作不使用硬盘驱动器或网络,因此延迟是微不足道的。

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

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