[asp.net-mvc]有更好的性能的方式获得只有几列 ASP MVC 中没有得到整个表,筛选与 LinQ 吗?

发布时间: 2017/3/25 1:53:05
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我打电话 200.000 行 6 列,表格,但我只是想要在一个控制器,所以我想知道是否有更好的方式叫他们从服务器性能丝毫无损,因为据我所知 Linq 查询获取整个表,它们使过滤,我觉得也许意见是好的方式使用这些列 2而且想要知道如果有其他更佳,谢谢。

例如︰

var items = from i in db.Items select new {i.id,i.name};

万一我有 1.000.000 项目,将它的服务器有问题吗?

解决方法 1:

你最初的假设是不正确的。

在一般情况下 LINQ 查询得不到整个表格。查询转换为"服务器侧表达式"(即 SQL 语句) 语句解析服务器上和返回请求的数据。

你给出的语句提供你会返回只有两列但你会得到 1,000,000 对象在结果中,如果你不做任何过滤。但这不是问题与 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

只有与条件匹配的行才会返回到您的应用程序和转换为对象。

赞助商