是否有更好的性能';这是一种在ASPMVC中只获取少数列而不获取整个表并使用LinQ进行过滤的方法
本文关键字:获取 数列 过滤 方法 LinQ 性能 更好 ASPMVC 一种 是否 | 更新日期: 2023-09-27 17:58:37
im调用一个有200000行和6列的表,但我只想在一个控制器中使用其中的2列,所以我想知道是否有更好的方法在不影响性能的情况下从服务器调用它们,因为我知道Linq查询会得到整个表,并进行过滤,我认为Views可能是一个好方法,但我想知道是否还有其他人和更好的人,谢谢。
例如:
var items = from i in db.Items select new {i.id,i.name};
如果我有1.000000个项目,这会给服务器带来麻烦吗?
您最初的假设是不正确的。
一般来说,LINQ查询不会得到整个表。查询被转换为"服务器端表达式"(即SQL语句),该语句在服务器上解析,并且只返回请求的数据。
给定您提供的语句,您将只返回两列,但如果不进行任何筛选,结果中将得到1000000个对象。但这不是LINQ的问题,而是你不过滤的问题。如果包含where
子句,则只能获得所请求的行。
var items = from i in db.Items
where i.Whatever == SomeValue
select new { i.id, i.name };
您的原始查询将(大致)转换为以下SQL:
SELECT id, name FROM Items
您没有包含where
子句,所以您将获得所有内容。
使用包含where
子句的版本,您将生成以下SQL:
SELECT id, name FROM Items WHERE Whatever = SomeValue
只有符合条件的行才会返回到应用程序并转换为对象。