【发布时间】:2019-07-09 02:56:56
【问题描述】:
我有一个 SQL Server 数据库表,其中包含大约 300 万条记录。我有一个 MVC 站点,其中有一个页面可以显示该表中的数据,但我遇到了广泛的性能问题。
像这样运行一个简单的查询大约需要 25-30 秒才能返回大约 2000 行:
_dbContext.Contracts
.Where(c => c.VendorID == vendorId)
.ToList();
我认为可能正在生成的 sql 正在做一些奇怪的事情,但这很简单:
SELECT
[Extent1].[ContractID] AS [ContractID],
[Extent1].[VendorID] AS [VendorID],
[Extent1].[Amount] AS [Amount],
FROM [dbo].[Contracts] AS [Extent1]
WHERE [Extent1].[VendorID] = @p__linq__0
但不同的是,当我直接在数据库上运行这个查询时,只需要 3-5 秒。所以我觉得 EF 可能在做一些奇怪的事情。
有什么办法可以提高它的性能吗?在 SQL 端还是在我的 EF 解决方案中?
网站有点旧,它是 MVC 3 和 EF 4
【问题讨论】:
-
这是一个新的 DbContext 实例吗?如果您有长期存在的 DbContext 实例,则更改跟踪器将累积大量对象实例,这会减慢对象实现速度。
-
@DavidBrowne-Microsoft 这是一个新实例
-
您是如何配置延迟加载的?也许 EF 也在尝试引入相关对象。
标签: c# asp.net sql-server performance entity-framework