【发布时间】:2018-09-22 17:51:21
【问题描述】:
我目前正在使用NonFactors/MVC6-Grid 来表示我的索引页面上的数据,这是一个使用 .NET Core 2.0 和 MVC 构建的相当基本的 CRUD 应用程序。我有一个包含多个字段的模型,其中一些是计算字段。
使用 MVC 网格进行排序和过滤非常有效,即使记录超过 550,000 条。但是,当我尝试对其中一个计算字段进行排序和过滤时,性能会大大降低(大约需要 45 秒)。这不是世界末日,但我想知道是否有办法提高计算字段的性能?
我很确定性能下降要么是由于计算字段上缺少索引,要么是因为每个记录的计算属性都被重新计算并然后排序/过滤,或两者兼而有之。
如果有人对瓶颈可能在哪里有任何见解,并且如果有办法可以提高性能,我们将不胜感激。
【问题讨论】:
-
不清楚“计算字段”是什么意思。这是映射到数据库表中计算列的属性吗?或者只是一个 get only 属性从对象的其他属性进行一些计算?因为在第二种情况下,EFC 只是从数据库中检索整个表数据并在客户端执行过滤/排序,这应该可以解释为什么它这么慢。
-
@IvanStoev 抱歉,不清楚。我说的是根据对象上的其他属性计算的属性。我相信我会尝试为所需的计算实现服务器端/持久列
-
然后避开那个属性,尝试使用对应的表达式。否则 EF Core 将使用客户端评估。这对于排序可能没什么大不了的(除非您还进行分页),但对于过滤而言,这将是一个真正的瓶颈。
标签: c# asp.net-mvc .net-core entity-framework-core nonfactors-mvc-grid